Автор оригинала: Pankaj Kumar.
Концепции объектно-ориентированного программирования очень важны для программирования. Не имея представления о концепциях OOPS, вы не сможете проектировать системы в модели объектно-ориентированного программирования.
Что такое Модель Объектно-ориентированного программирования?
Модель объектно-ориентированного программирования вращается вокруг концепции объектов.
Что такое Объект?
Объект-это экземпляр класса. Он содержит свойства и функции. Они похожи на объекты реального мира. Например, ваша машина, дом, ноутбук и т. Д.-Все это объекты. У них есть некоторые специфические свойства и методы для выполнения некоторых действий.
Что такое Класс?
Класс определяет схему объектов. Они определяют свойства и функциональные возможности объектов. Например, Ноутбук-это класс, а ваш ноутбук-его экземпляр.
УПС Концепции
Основными концепциями УПС являются:
- Абстракция
- Инкапсуляция
- Полиморфизм
- Наследование
- Ассоциация
- Агрегация
- Композиция
Давайте рассмотрим эти концепции объектно-ориентированного программирования одну за другой. Мы будем использовать язык программирования Java для примеров кода, чтобы вы знали, как реализовать концепции OOPS в Java.
1. Абстракция
Абстракция-это концепция сокрытия внутренних деталей и описания вещей простыми терминами. Например, метод, который добавляет два целых числа. Внутренняя обработка метода скрыта от внешнего мира. Существует множество способов достижения абстракции в объектно-ориентированных программах, таких как инкапсуляция и наследование.
Программа на Java также является отличным примером абстракции. Здесь java заботится о преобразовании простых операторов в машинный язык и скрывает детали внутренней реализации от внешнего мира.
2. Инкапсуляция
Инкапсуляция-это метод, используемый для реализации абстракции в объектно-ориентированном программировании. Инкапсуляция используется для ограничения доступа к членам и методам класса.
Ключевые слова модификатора доступа используются для инкапсуляции в объектно-ориентированном программировании. Например, инкапсуляция в java достигается с помощью ключевых слов private , protected и public .
3. Полиморфизм
Полиморфизм-это концепция, в которой объект ведет себя по-разному в разных ситуациях. Существует два типа полиморфизма – полиморфизм во время компиляции и полиморфизм во время выполнения.
Полиморфизм во время компиляции достигается за счет перегрузки метода . Например, у нас может быть класс, как показано ниже.
public class Circle {
public void draw(){
System.out.println("Drwaing circle with default color Black and diameter 1 cm.");
}
public void draw(int diameter){
System.out.println("Drwaing circle with default color Black and diameter"+diameter+" cm.");
}
public void draw(int diameter, String color){
System.out.println("Drwaing circle with color"+color+" and diameter"+diameter+" cm.");
}
}
Здесь у нас есть несколько методов draw , но они ведут себя по-разному. Это случай перегрузки метода, потому что все методы имеют одинаковые имена, а аргументы разные. Здесь компилятор сможет определить метод, вызываемый во время компиляции, поэтому он называется полиморфизмом во время компиляции.
Полиморфизм времени выполнения реализуется, когда у нас есть связь “ЕСТЬ-Есть” между объектами. Это также называется переопределением метода, поскольку подкласс должен переопределять метод суперкласса для полиморфизма во время выполнения.
Если мы работаем в терминах суперкласса, фактический класс реализации определяется во время выполнения. Компилятор не может решить, какой метод класса будет вызван. Это решение принимается во время выполнения, отсюда и название как полиморфизм во время выполнения или отправка динамического метода.
package com.journaldev.test;
public interface Shape {
public void draw();
}
package com.journaldev.test;
public class Circle implements Shape{
@Override
public void draw(){
System.out.println("Drwaing circle");
}
}
package com.journaldev.test;
public class Square implements Shape {
@Override
public void draw() {
System.out.println("Drawing Square");
}
}
Форма является суперклассом, и есть два подкласса Круг и Квадрат . Ниже приведен пример полиморфизма во время выполнения.
Shape sh = new Circle(); sh.draw(); Shape sh1 = getShape(); //some third party logic to determine shape sh1.draw();
В приведенных выше примерах компилятор java не знает фактического класса реализации Shape, который будет использоваться во время выполнения, следовательно, полиморфизм во время выполнения.
4. Наследование
Наследование-это концепция объектно-ориентированного программирования, в которой объект основан на другом объекте. Наследование-это механизм повторного использования кода. Объект, который наследуется, называется суперклассом, а объект, который наследует суперкласс, называется подклассом.
Мы используем ключевое слово extends в java для реализации наследования. Ниже приведен простой пример наследования в java.
package com.journaldev.java.examples1;
class SuperClassA {
public void foo(){
System.out.println("SuperClassA");
}
}
class SubClassB extends SuperClassA{
public void bar(){
System.out.println("SubClassB");
}
}
public class Test {
public static void main(String args[]){
SubClassB a = new SubClassB();
a.foo();
a.bar();
}
}
5. Ассоциация
Ассоциация-это концепция OOPS для определения отношений между объектами. Ассоциация определяет множественность между объектами. Например, объекты Учителя и ученика. Между учителем и учениками существуют отношения “один ко многим”. Аналогично, у ученика могут быть отношения “один ко многим” с объектами учителя. Однако объекты как ученика, так и учителя независимы друг от друга.
Агрегация
Агрегация-это особый тип ассоциации. В совокупности объекты имеют свой собственный жизненный цикл, но есть право собственности. Всякий раз, когда у нас есть связь “ИМЕЕТ” между объектами и собственностью, это случай агрегации.
6. Состав
Композиция является частным случаем агрегации. Композиция представляет собой более ограничительную форму агрегации. Когда содержащийся объект в отношениях “ИМЕЕТ” не может существовать сам по себе, это случай композиции. Например, в доме есть-Комната. Здесь комната не может существовать без дома. Говорят, что композиция лучше, чем наследование, подробнее читайте в разделе Композиция против наследования .
Это все для быстрого ознакомления с концепциями УПС.
Список литературы: https://docs.oracle.com/javase/tutorial/java/concepts/