Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Вивчайте Принципи ООП: Абстракція | ООП
Java ООП
course content

Зміст курсу

Java ООП

Java ООП

1. Як Працювати з IDE?
2. ООП
3. Інтерфейс

book
Принципи ООП: Абстракція

Абстракція

Отже, ми дійшли до останнього, але дуже важливого принципу OOP: Абстракція. Слово "абстракція" звучить досить абстрактно, і коротко цей принцип говорить нам, що ми повинні залежати від абстракції, а не від конкретної реалізації. Проте зараз це може звучати складно. Почнемо з визначення:

Наприклад, у нас є клас Person,, від якого наслідуються багато різних класів. Person має різні поля та методи, спільні для всіх класів. Однак, коли у нас є клас BasketballPlayer,, характеристика height стає вирішальною, тоді як для класу Driver height є несуттєвою і неважливою. Саме тут і застосовується абстракція. Наслідуючи від абстракції, ми можемо зробити параметр height необов'язковим, щоб не використовувати його там, де це не потрібно.

Може здатися складним, тому перейдемо до прикладу:

Car.java

Car.java

copy
123456789
public abstract class Car { String model; int year; int maxSpeed; String color; public abstract void move(); public abstract void stop(); }

Клас Car не представляє щось конкретне. Не існує просто Car; є седани, вантажівки, трактори. Тому ми будемо залежати від абстракції під назвою Car. Щоб спростити: Car — це шаблон, на основі якого створюються конкретні класи автомобілів.

Зверніть увагу на синтаксис:

Це синтаксис для оголошення абстрактного класу. Також зверніть увагу на синтаксис для оголошення абстрактного методу:

Абстрактний метод не має тіла; це його головна характеристика. Підкласи абстрактного класу будуть перевизначати цей абстрактний метод, щоб визначити власну реалізацію, використовуючи поліморфізм.

Розглянемо детальніше, що таке абстрактний клас:

Зверніть увагу, що не можна створити об'єкт абстрактного класу; це призведе до помилки:

Абстрактні класи звільняють нас від роботи лише з "об'єктами"; вони надають базовий стан і поведінку. На прикладі автомобілів: кожен автомобіль повинен мати модель, рік випуску, максимальну швидкість і колір. Вони також повинні вміти рухатись і зупинятись. Це все; далі ви будете створювати свої конкретні класи на основі цієї абстрактної схеми.

Правила створення абстрактного класу

  1. Абстрактний клас — це клас, який містить принаймні один абстрактний метод. Можна створити абстрактний клас без абстрактних методів, але тоді він не матиме сенсу. Неможливо створити об'єкти абстрактного класу;

  2. Абстрактні методи можуть існувати лише в абстрактному класі; не можна створювати абстрактні методи поза абстрактним класом;

  3. Методи в абстрактному класі можуть бути як абстрактними, так і з реалізацією;

  4. Клас, що наслідує абстрактний клас, повинен перевизначити всі абстрактні методи;

  5. Можна наслідуватися максимум від одного класу (абстрактного чи не абстрактного);

  6. Абстрактний клас повинен представляти спільні властивості та поведінку своїх підкласів. Це буде розглянуто детальніше під час вивчення принципів SOLID.

Розглянемо приклад, щоб зрозуміти, як підкласи повинні перевизначати абстрактні методи, наслідуючи абстрактний клас, на прикладі дочірнього класу Truck:

Ось код із скріншоту, переписаний для кращої читабельності та зрозумілості:

Car.java

Car.java

Truck.java

Truck.java

Main.java

Main.java

copy
123456789
public abstract class Car { String model; int year; int maxSpeed; String color; public abstract void move(); public abstract void stop(); }

Розглянемо детальніше, що написано вище:

  • Перший слайд: Створюється підклас Truck, який успадковується від абстрактного класуCar. IDE підказує реалізувати обов'язкові методи;

  • Другий слайд: Перевизначаються необхідні методи. Наприклад, зазначається, що Truck почав рух і потім зупинився;

  • Третій слайд: Створюється об'єкт у методі main. Зверніть увагу на використаний синтаксис: Car name = new Truck();. Створення об'єкта починається через абстракцію і завершується конкретною реалізацією. Це називається композицією. Далі за потреби присвоюються значення полям і викликаються перевизначені методи.

Voilà! Якщо все зрозуміло, ви опанували використання абстрактного класу!

Підсумок

Абстракція — це, ймовірно, найскладніший принцип OOP для розуміння, і цілком можливо, що наразі ви ще не все засвоїли. Але не думайте, що ви з цим наодинці. Абстракція — це концепція, яку спочатку важко зрозуміти більшості розробників. З часом ви краще зрозумієте, як ефективно працювати з абстракцією та абстрактними класами. Абстракція є ключовим принципом, оскільки дозволяє робити наші програми розширюваними та дуже гнучкими.

1. Що таке абстракція в об'єктно-орієнтованому програмуванні?

2. Які з наведених тверджень є правильними щодо абстракції?

3. Яке призначення абстрактного класу в Java?

4. Як абстракція сприяє підтримуваності коду?

question mark

Що таке абстракція в об'єктно-орієнтованому програмуванні?

Select the correct answer

question mark

Які з наведених тверджень є правильними щодо абстракції?

Select the correct answer

question mark

Яке призначення абстрактного класу в Java?

Select the correct answer

question mark

Як абстракція сприяє підтримуваності коду?

Select the correct answer

Все було зрозуміло?

Як ми можемо покращити це?

Дякуємо за ваш відгук!

Секція 2. Розділ 7

Запитати АІ

expand

Запитати АІ

ChatGPT

Запитайте про що завгодно або спробуйте одне із запропонованих запитань, щоб почати наш чат

course content

Зміст курсу

Java ООП

Java ООП

1. Як Працювати з IDE?
2. ООП
3. Інтерфейс

book
Принципи ООП: Абстракція

Абстракція

Отже, ми дійшли до останнього, але дуже важливого принципу OOP: Абстракція. Слово "абстракція" звучить досить абстрактно, і коротко цей принцип говорить нам, що ми повинні залежати від абстракції, а не від конкретної реалізації. Проте зараз це може звучати складно. Почнемо з визначення:

Наприклад, у нас є клас Person,, від якого наслідуються багато різних класів. Person має різні поля та методи, спільні для всіх класів. Однак, коли у нас є клас BasketballPlayer,, характеристика height стає вирішальною, тоді як для класу Driver height є несуттєвою і неважливою. Саме тут і застосовується абстракція. Наслідуючи від абстракції, ми можемо зробити параметр height необов'язковим, щоб не використовувати його там, де це не потрібно.

Може здатися складним, тому перейдемо до прикладу:

Car.java

Car.java

copy
123456789
public abstract class Car { String model; int year; int maxSpeed; String color; public abstract void move(); public abstract void stop(); }

Клас Car не представляє щось конкретне. Не існує просто Car; є седани, вантажівки, трактори. Тому ми будемо залежати від абстракції під назвою Car. Щоб спростити: Car — це шаблон, на основі якого створюються конкретні класи автомобілів.

Зверніть увагу на синтаксис:

Це синтаксис для оголошення абстрактного класу. Також зверніть увагу на синтаксис для оголошення абстрактного методу:

Абстрактний метод не має тіла; це його головна характеристика. Підкласи абстрактного класу будуть перевизначати цей абстрактний метод, щоб визначити власну реалізацію, використовуючи поліморфізм.

Розглянемо детальніше, що таке абстрактний клас:

Зверніть увагу, що не можна створити об'єкт абстрактного класу; це призведе до помилки:

Абстрактні класи звільняють нас від роботи лише з "об'єктами"; вони надають базовий стан і поведінку. На прикладі автомобілів: кожен автомобіль повинен мати модель, рік випуску, максимальну швидкість і колір. Вони також повинні вміти рухатись і зупинятись. Це все; далі ви будете створювати свої конкретні класи на основі цієї абстрактної схеми.

Правила створення абстрактного класу

  1. Абстрактний клас — це клас, який містить принаймні один абстрактний метод. Можна створити абстрактний клас без абстрактних методів, але тоді він не матиме сенсу. Неможливо створити об'єкти абстрактного класу;

  2. Абстрактні методи можуть існувати лише в абстрактному класі; не можна створювати абстрактні методи поза абстрактним класом;

  3. Методи в абстрактному класі можуть бути як абстрактними, так і з реалізацією;

  4. Клас, що наслідує абстрактний клас, повинен перевизначити всі абстрактні методи;

  5. Можна наслідуватися максимум від одного класу (абстрактного чи не абстрактного);

  6. Абстрактний клас повинен представляти спільні властивості та поведінку своїх підкласів. Це буде розглянуто детальніше під час вивчення принципів SOLID.

Розглянемо приклад, щоб зрозуміти, як підкласи повинні перевизначати абстрактні методи, наслідуючи абстрактний клас, на прикладі дочірнього класу Truck:

Ось код із скріншоту, переписаний для кращої читабельності та зрозумілості:

Car.java

Car.java

Truck.java

Truck.java

Main.java

Main.java

copy
123456789
public abstract class Car { String model; int year; int maxSpeed; String color; public abstract void move(); public abstract void stop(); }

Розглянемо детальніше, що написано вище:

  • Перший слайд: Створюється підклас Truck, який успадковується від абстрактного класуCar. IDE підказує реалізувати обов'язкові методи;

  • Другий слайд: Перевизначаються необхідні методи. Наприклад, зазначається, що Truck почав рух і потім зупинився;

  • Третій слайд: Створюється об'єкт у методі main. Зверніть увагу на використаний синтаксис: Car name = new Truck();. Створення об'єкта починається через абстракцію і завершується конкретною реалізацією. Це називається композицією. Далі за потреби присвоюються значення полям і викликаються перевизначені методи.

Voilà! Якщо все зрозуміло, ви опанували використання абстрактного класу!

Підсумок

Абстракція — це, ймовірно, найскладніший принцип OOP для розуміння, і цілком можливо, що наразі ви ще не все засвоїли. Але не думайте, що ви з цим наодинці. Абстракція — це концепція, яку спочатку важко зрозуміти більшості розробників. З часом ви краще зрозумієте, як ефективно працювати з абстракцією та абстрактними класами. Абстракція є ключовим принципом, оскільки дозволяє робити наші програми розширюваними та дуже гнучкими.

1. Що таке абстракція в об'єктно-орієнтованому програмуванні?

2. Які з наведених тверджень є правильними щодо абстракції?

3. Яке призначення абстрактного класу в Java?

4. Як абстракція сприяє підтримуваності коду?

question mark

Що таке абстракція в об'єктно-орієнтованому програмуванні?

Select the correct answer

question mark

Які з наведених тверджень є правильними щодо абстракції?

Select the correct answer

question mark

Яке призначення абстрактного класу в Java?

Select the correct answer

question mark

Як абстракція сприяє підтримуваності коду?

Select the correct answer

Все було зрозуміло?

Як ми можемо покращити це?

Дякуємо за ваш відгук!

Секція 2. Розділ 7
some-alt