ООП Concepts in Java
Какво е OOPS?
Обектно-ориентирана система за програмиране (ООП) е концепция за програмиране, която работи на принципите на абстракция, капсулиране, наследяване и полиморфизъм. Той позволява на потребителите да създават обекти, които искат, и да създават методи за работа с тези обекти. Основната концепция на ООП е да се създават обекти, да се използват повторно в цялата програма и да се манипулират тези обекти, за да се получат резултати.
OOP, което означава „обектно ориентирано програмиране“ е популярно известна и широко използвана концепция в съвременните езици за програмиране като Java.
ООП Concepts in Java с примери
Следват общи концепции за ООП в Java:
1) Клас
- клас е една от основните концепции на OOP, която е група от подобни обекти. Това е само логически компонент, а не физическото лице. Нека разберем този един от OOPs Concepts например, ако имате клас, наречен „Скъпи автомобили“, той може да има обекти като Mercedes, BMW, Toyota и др. Неговите свойства (данни) могат да бъдат цена или скорост на тези автомобили. Докато методите могат да се изпълняват с тези автомобили са шофиране, заден ход, спиране и т.н.
2) Обект
Един обект може да бъде дефиниран като екземпляр на клас и може да има множество екземпляри на клас в една програма. Обектът е един от Java OOP концепции, които съдържат както данните, така и функцията, която работи с данните. Например – стол, велосипед, маркер, химикал, маса, кола и др.
3) Наследство
наследяване е един от Основните Concepts на ООП, в които един обект придобива свойствата и поведението на родителския обект. Това е създаване на връзка родител-дете между два класа. Предлага здрав и естествен механизъм за организиране и структура на всеки софтуер.
4) Полиморфизъм
полиморфизъм се отнася до една от концепциите на OOP в Java което е способността на променлива, обект или функция да приема множество форми. Например на английски глаголът тичам има различно значение, ако го използвате с лаптоп, пешеходно състезание, и бизнес. Тук разбираме значението на тичам въз основа на другите думи, използвани заедно с него. Същото важи и за полиморфизма.
5) Абстракция
абстракция е един от OOP Concepts in Java което е акт на представяне на съществени характеристики, без да се включват подробности за фона. Това е техника за създаване на нов тип данни, който е подходящ за конкретно приложение. Нека разберем този един от OOPs Concepts например, докато шофирате кола, не е нужно да се притеснявате за нейната вътрешна работа. Тук просто трябва да се грижите за части като волан, скорости, газ и т.н.
6) Капсулиране
Капсулирането е един от най-добрите Java OOP концепции за обвиване на данните и кода. В тази концепция на ООП променливите на един клас винаги са скрити от другите класове. Той може да бъде достъпен само чрез методите на текущия им клас. Например – в училище един ученик не може да съществува без клас.
7) Асоциация
Асоциацията е връзка между два обекта. Това е един от OOP Concepts in Java което определя разнообразието между обектите. В тази OOP концепция всички обекти имат отделен жизнен цикъл и няма собственик. Например, много ученици могат да се асоциират с един учител, докато един ученик може също да се асоциира с множество учители.
8) Агрегиране
При тази техника всички обекти имат отделен жизнен цикъл. Има обаче собственост, така че дъщерният обект не може да принадлежи на друг родителски обект. Например помислете за клас/предметен отдел и учител. Тук един учител не може да принадлежи към няколко отдела, но дори и да изтрием отдела, обектът учител никога няма да бъде унищожен.
9) Състав
Композицията е специализирана форма на агрегиране. Нарича се още връзка „смърт“. Дъщерните обекти нямат своя жизнен цикъл, така че когато родителският обект изтрие всички дъщерни обекти също ще бъдат изтрити автоматично. За това нека вземем пример за Къща и стаи. Всяка къща може да има няколко стаи. Една стая не може да стане част от две различни къщи. Така че, ако изтриете стаята на къщата също ще бъде изтрита.
Предимства на ООП (обектно-ориентирана система за програмиране):
- ООП Concepts in Java предлагат лесна за разбиране и ясна модулна структура за програмите.
- Обекти, създадени за обектно-ориентирани програми, могат да се използват повторно в други програми. По този начин спестява значителни разходи за разработка.
- Големите програми са трудни за писане, но ако екипът за разработка и проектиране следва концепциите на OOPS, тогава те могат да проектират по-добре с минимални недостатъци.
- Той подобрява модулността на програмата, защото всеки обект съществува независимо.
Сравнение на OOPS с други стилове на програмиране с помощта на пример
Нека разберем с пример как Java ООП Concepts са различни от другите подходи за програмиране.
Програмни езици могат да бъдат класифицирани в 3 основни типа
- Неструктурирани езици за програмиране: Най-примитивният от всички езици за програмиране с последователен поток на управление. Кодът се повтаря през цялата програма
- Структурирани езици за програмиране: Има непоследователен поток на управление. Използването на функции позволява повторно използване на код.
- Обектно ориентирани езици за програмиране: Комбинира данни и действие заедно.
Кликнете тук ако видеото не е достъпно
Нека разберем тези 3 типа с пример.
Да предположим, че искате да създадете банков софтуер с функции като
- депозит
- Теглене
- Показване на баланс
Неструктурирани езици за програмиране
Най-ранният от всички езици за програмиране беше неструктуриран език за програмиране. Един много елементарен код на банково приложение на неструктуриран език за програмиране ще има две променливи от един номер на сметка и друга за баланс на сметката
int account_number=20; int account_balance=100;
Да предположим, че е направен депозит от 100 долара.
account_balance=account_balance+100
След това трябва да покажете баланса по сметката.
printf(“Account Number=%d,account_number) printf(“Account Balance=%d,account_balance)
Сега сумата от 50 долара е изтеглена.
account_balance=account_balance-50
Отново трябва да покажете салдото по сметката.
printf(“Account Number=%d,account_number) printf(“Account Balance=%d,account_balance)
За всяка по-нататъшна операция по депозиране или теглене – ще кодирате едни и същи редове отново и отново.
Структурно програмиране
С пристигането на структурираното програмиране повтарящите се редове в кода бяха поставени в структури като функции или методи. Когато е необходимо, се прави просто извикване на функцията.
Обектно-ориентирано програмиране
В нашата програма ние работим с данни или извършваме специфични операции върху данните. Всъщност наличието на данни и извършването на определени операции върху тези данни е основна характеристика на всяка софтуерна програма. Експертите в софтуерното програмиране са измислили комбинирането на данните и Operaции. Следователно раждането на обектно-ориентираното програмиране, което обикновено се нарича OOPS. Същият код в езиците за обектно ориентирано програмиране ще има едни и същи данни и някои действия, извършени върху тези данни.
Class Account{ int account_number; int account_balance; public void showdata(){ system.out.println(“Account Number”+account_number) System.out.println(“Account Balance”+ account_balance) } }
Чрез комбиниране на данни и действие ще получим много предимства пред структурното програмиране, а именно,
- абстракция
- Капсулирането
- наследяване
- полиморфизъм
Те се обсъждат по-подробно в следващите уроци