Рубрики
Без рубрики

Концепции OOPS в Java – Пример концепций OOPS

Концепции OOPS-это принципы проектирования, которые используются в Системах объектно-ориентированного программирования. Краткое введение в концепции OOPS в программировании на Java.

Автор оригинала: Pankaj Kumar.

Концепции объектно-ориентированного программирования очень важны для программирования. Не имея представления о концепциях OOPS, вы не сможете проектировать системы в модели объектно-ориентированного программирования.

Что такое Модель Объектно-ориентированного программирования?

Модель объектно-ориентированного программирования вращается вокруг концепции объектов.

Что такое Объект?

Объект-это экземпляр класса. Он содержит свойства и функции. Они похожи на объекты реального мира. Например, ваша машина, дом, ноутбук и т. Д.-Все это объекты. У них есть некоторые специфические свойства и методы для выполнения некоторых действий.

Что такое Класс?

Класс определяет схему объектов. Они определяют свойства и функциональные возможности объектов. Например, Ноутбук-это класс, а ваш ноутбук-его экземпляр.

УПС Концепции

Основными концепциями УПС являются:

  1. Абстракция
  2. Инкапсуляция
  3. Полиморфизм
  4. Наследование
  5. Ассоциация
  6. Агрегация
  7. Композиция

Давайте рассмотрим эти концепции объектно-ориентированного программирования одну за другой. Мы будем использовать язык программирования 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/