OOP таке солодке, як шоколадка

pic

Привіт,

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

Увага, слухачі: важливо мати чітке розуміння концепцій об'єктно-орієнтованого програмування (OOP), оскільки ми глибше зануримося в тему.

Що таке OOP?

Об'єктно-орієнтоване програмування (OOP) — це парадигма програмування, яка організовує код в багаторазові об'єкти. Ці об'єкти представляють реальні сутності та спроектовані так, щоб взаємодіяти між собою для виконання завдань. OOP робить код більш структурованим, легшим для розуміння і простішим для підтримки.

Дозвольте провести вас у подорож OOP…

Розглянемо реальний об'єкт, використовуючи шоколад як продукт в цьому прикладі.

Продукти виставлені на полицях магазину, всі чекають, коли клієнти зроблять покупку. І ось ви додаєте шоколадку до свого кошика.

pic

Це, по суті, те, що ховається за штрих-кодом шоколадки в супермаркеті, в якому ви зараз перебуваєте!

public class Chocolate {  
 private int id;  
 private String name;  
 private int quantity;  

 // Конструктор  
 public Chocolate(int id, String name, int quantity) {  
 this.id = id;  
 this.name = name;  
 this.quantity = quantity;  
 }  
 // Геттеры і сеттери  
 public int getId() {  
 return id;  
 }  
 public void setId(int id) {  
 this.id = id;  
 }  
 public String getName() {  
 return name;  
 }  
 public void setName(String name) {  
 this.name = name;  
 }  
 public int getQuantity() {  
 return quantity;  
 }  
 public void setQuantity(int quantity) {  
 this.quantity = quantity;  
 }  
}

Давайте з'ясуємо, хто управляє цим продуктом, і перевіримо, скільки залишилося в запасі?

Ви розумієте, що нічого не потрібно для дому чи для себе, окрім шоколадки. Ви підходите до каси, і вам вітають: «Добрий день, пані/пане!» 😊

  • Ось це справжня увага до клієнтів!

pic

Після того, як ваш продукт буде відскановано штрих-кодом, відбудеться одна з операцій, яку я розгляну нижче, де система перевіряє кількість шоколадок. Оскільки ви придбали одну, запас магазину зменшується на одну, зменшуючи кількість на 1.

public interface ChocolateService {  
 void checkChocolateStock(Chocolate chocolate);  
}
public class ChocolateManagement implements chocolateService {  

 @Override  
 public void checkChocolateStock(Chocolate chocolate) {  

 while (chocolate.getQuantity() < 5) {  
 System.out.println("Chocolate ID: " + chocolate.getId() + " is low on stock. Notifying storehouse...");   
 chocolate.setQuantity(chocolate.getQuantity() + 1); // Збільшуємо запас для симуляції поповнення  
 }  
 System.out.println("Chocolate ID: " + chocolate.getId() + " now has sufficient stock.");  
 }  
}
  • Причина використання while loop: щоб повторно перевіряти і сповіщати склад до тих пір, поки запас не буде поповнено (або оновлено).
  • Причина, чому не використовується if умова: Сповіщення складу тільки один раз, якщо кількість менша за 5.

Давайте подивимося, що станеться, коли продукт, який ви купили, більше не буде в наявності?

У попередніх блоках коду ми побачили, що система сповіщає склад, коли кількість продукту падає нижче 5.
Однак це повідомлення надсилається через контролер, який комунікує із системою зовнішньо.

pic

import java.util.ArrayList;  
import java.util.List;  

public class ChocolateController {  
 private ChocolateService chocolateService;  
 public ChocolateController() {  
 this.chocolateService = new chocolateManagement();  
 }  
 public void manageChocolates() {  

 List chocolates = new ArrayList<>();  
 chocolates.add(new chocolate(1, "Snickers", 4)); //Ось кількість шоколадки, яку ви взяли, менша за 5   
 chocolates.add(new chocolate(2, "Twix", 10));  
 chocolates.add(new chocolate(3, "Mars", 23));  
 chocolates.add(new chocolate(4, "m&m", 12));  
 for (Chocolate chocolate : chocolates) {  
 chocolateService.checkchocolateStock(chocolate);  
 }  
 }  
 public static void main(String[] args) {  
 chocolateController controller = new chocolateController();  
 controller.manageChocolates();  
 }  
}

Повний вивід системи виглядатиме ось так:

Chocolate ID: 1 is low on stock. Notifying storehouse...  
Chocolate ID: 1 is low on stock. Notifying storehouse...  
Chocolate ID: 1 is low on stock. Notifying storehouse...  
Chocolate ID: 2 is now has sufficient stock.  
Chocolate ID: 3 is now has sufficient stock.  
Chocolate ID: 4 is now has sufficient stock.

Ви стаєте свідком комунікації між комп'ютером і людиною, і бачите, як технології допомагають в нашому житті, спрощуючи процеси.

Таким чином, я провів вас через подорож шоколадом, показавши місце, де можна придбати шоколад — чи то на ринку, в магазині, супермаркеті чи деінде. Я продемонстрував, як склад і ринок можуть взаємодіяти для вирішення проблеми з низьким запасом через контролер, використовуючи принципи об'єктно-орієнтованого програмування (OOP). 🙂

Наостанок, ось фото моєї команди, з якою я мав задоволення працювати, коли керував супермаркетом два роки тому.

pic

Зліва направо: Я, Oğuzhan Cihanker (Право), Yusuf Faik Can (Будівельна інженерія)

Сподіваюся, ви знайшли щось корисне в цій статті. Мені було приємно поділитися моїм досвідом через реальний приклад. Сподіваюся на нові зустрічі з вами в майбутніх статтях!

Перекладено з: OOP as Sweet as a Chocolate Bar

Leave a Reply

Your email address will not be published. Required fields are marked *