oop java introduction object oriented programming java
Овај видео водич ће увести концепте ООП (објектно оријентисано програмирање) на Јави, као што су Објецт, Цласс, Инхеританце, Полиморпхисм, Абстрацтион, Енцапсулатион итд.:
У софтверском програмирању имамо разне врсте програмских језика. Главни језици међу њима су или процедуралне или објектно оријентисане природе.
У процедуралним програмским језицима, већи проблеми се рашчлањују на мале решиве проблеме. Ови мали проблеми се претварају у процедуре или функције. На овај начин процедурални програмски језик наглашава функције, а не податке. Стога су процедурални језици у потпуности занемарили податке и на тај начин уопште не осигуравају сигурност података.
За овај проблем се побринуо објектно оријентисани програмски језик. Објектно оријентисано програмирање је начин дизајнирања и програмирања софтвера манипулацијом објектима и објекти су главни део програмирања.
Откријте читаву нашу серију Јава водича за почетнике овде .
Шта ћете научити:
Видео водичи о концептима ООПС-а
ООПС концепт у Јави - 1. део:
Детаљни преглед ООПС концепта у Јави - 2. део:
Објектно оријентисани програмски језици нагласак стављају на податке више него на функције. Објектно оријентисано програмирање (ООП) врти се око објеката тј. Ентитета у реалном времену.
Овај објекат обједињује податке и методе које делују на те податке у једној јединици. На овај начин, подаци су заштићени од спољног света тако што се методе налазе унутар објекта. У ООП-у објекти међусобно комуницирају путем порука.
Било који ООП језик подржава следеће функције:
- Предавања
- Капсулација
- Одвајање
- Наслеђивање
- Полиморфизам
Све ове функције осигуравају заштиту података, а истовремено можемо и да пишемо робусне апликације. Смаллталк, Ц ++, Јава итд. Су неки од објектно оријентисаних програмских језика.
У овом упутству ћемо разговарати о основама ООП-а које се тичу Јава језика.
Објектно оријентисано програмирање (ООП) на Јави
Јава је тренутно најтраженија вештина програмирања. У Јави се све заснива на објекту. Јава има роот класу под називом Објецт из које је изведена целокупна функционалност Јава. Тако ћемо у овом упутству размотрити главне карактеристике ООП-а које се тичу Јаве.
Препоручено читање => ООП питања и одговори за интервјуе
Овде ћемо разговарати о томе како Јава подржава следеће ООП функције.
- Предмет и класа
- Класа
- Наслеђивање
- Полиморфизам
- Одвајање
- Капсулација
Размотримо детаљно сваки од ових Јава ООП концепата.
Предмет и класа
Класа се може дефинисати као прототип дизајна или као нацрт. Предмети се креирају из ових нацрта. У основи дефинише уобичајени тип који се састоји од својстава и метода који делују на ова својства за овај уобичајени тип. Затим дефинишемо инстанце ове класе назване објектима.
Класа има много компонената као што је приказано на следећој слици.
Предмет представља ентитет из стварног живота. У Јави је објекат инстанца класе. Дакле, класа која је нацрт може се користити за стварање многих објеката. Ови објекти често комуницирају међусобно преношењем порука путем метода.
Видео лекције: Часови и предмети
Објекат обично има:
- Држава: Својства или атрибути објекта у одређено време.
- Понашање: Методе представљају понашање објекта. Методе такође дефинишу како објекти комуницирају.
- Идентитет: Идентификује објекат дајући му јединствено име.
На пример, ако имамо класу ПетАнималс.
Тада можемо дефинисати објекат ове класе на следећи начин:
ПетАнималс пиг = нови ПетАнималс.
Овде је идентитет предмета свиња.
Доље је дат програм који приказује класу и објекат.
//student class class Student{ int roll_No; String student_name; } class Main{ public static void main(String args()){ //Create objects of class Student Student student1=new Student(); Student student2=new Student(); //Initialize Student class objects student1.roll_No=101; student1.student_name='Lisa'; student2.roll_No=102; student2.student_name='Dan'; //Print object data System.out.println('Student 1 Details: ' + student1.roll_No+' '+student1.student_name); System.out.println('Student 2 Details: ' + student2.roll_No+' '+student2.student_name); } }
Оутпут
У горњој класи смо дефинисали класу Студент са два својства ролл_Но и студент_наме. Затим у главној методи декларишемо два предмета класе, односно студент1 и студент2. Имајте на уму да се ови објекти креирају помоћу новог оператора. Једном када се објекти креирају, додељујемо податке обема својствима објекта.
На крају, исписујемо садржај предмета помоћу оператора „.“ (Тачка).
Сазнаћемо више о класама и објектима у нашим специфичним темама ООП туторијала.
Наслеђивање
Наслеђивање је једна од најважнијих карактеристика ООП-а. Кроз наслеђивање, Јава промовише поновну употребу кода.
Па, шта је наследство у Јави?
Наслеђивање је механизам у Јави у којем једна класа може наследити својства друге класе. Својства која се могу наследити укључују чланове података и методе класе.
Класа која наслеђује својства друге класе назива се подкласа. Наслеђена класа је на Јави позната као „супер“ класа.
Наслеђивањем класе, подкласа не само наслеђује својства, већ и поново користи код, јер програмер не мора поново да пише код када га може директно наследити помоћу наслеђивања.
У Јави се наслеђивање постиже употребом кључне речи „ектендс“. Ова кључна реч ектендс користи се у дефиницији класе, а прати је име класе које треба наследити.
На пример,ако постоје две класе, А и Б, а А наслеђује Б, онда се ово наследство на Јави записује као:
class B extends A { …… }
Као што је већ поменуто, овде је А суперкласа или основна класа или родитељска класа. Б је подкласа, изведена класа или подређена класа.
Наслеђе се даље дели на следеће врсте.
Јава подржава наслеђивање у једном нивоу, на више нивоа и хијерархијско.
Имајте на уму да Јава не подржава више наслеђа. Јава такође не подржава хибридно наслеђивање које је комбинација вишеструких и хијерархијских наслеђа.
Доље је дат пример програма појединачног наслеђивања на Јави.
//base class class Employee{ float salary=50000; } //derived class class Developer extends Employee{ int bonus=20000; } class Main{ public static void main(String args()){ //declare Developer class object and access properties of base and derived class Developer p=new Developer(); System.out.println('Inheritance in Java'); System.out.println('Developer salary: '+p.salary); System.out.println('Bonus declared for Developer: '+p.bonus); System.out.println('Developer Total Earnings: ' + (p.salary + p.bonus)); } }
Оутпут
У горе наведеном програму имамо основну класу запослени. Имамо још једног програмера класе који наслеђује класу Емплоиее. У главној методи можемо видети да декларацијом објекта класе Девелопер можемо приступити не само својствима класе Девелопер већ и класи Емплоиее како је наслеђује класа Девелопер.
Полиморфизам
Полиморфизам је још једна важна карактеристика ООП. Полиморфизам је способност језика да дозволи објектима или ентитетима да поприме више облика. На пример, метода која има различите примене је полиморфна у Јави.
Полиморфизам је у Јави два типа:
- Преоптерећење или компилација временског полиморфизма: У полиморфизму током компајлирања, позив полиморфној или преоптерећеној методи се решава у време компајлирања.
- Замена или рунтиме полиморфизам: У полиморфизму извршавања, позив замењене методе у програму Јава решава се током извођења.
О полиморфизму ћемо детаљно разговарати у нашим следећим водичима.
Доље је дат пример полиморфизма времена компајлирања у Јави, где имамо метод адд који је преоптерећен за извршавање сабирања са различитим типовима операнда.
class Numbers_Sum { //add method : takes two int parameters public int add(int val1, int val2) { return (val1 + val2); } // overloaded add : takes three int parameters public int add(int val1, int val2, int val3) { return (val1 + val2 + val3); } //overloaded add: takes two double parameters public double add(double val1, double val2) { return (val1 + val2); } } class Main{ public static void main(String args()) { //create an object of Numbers_Sum class and call overloaded functions Numbers_Sum numsum = new Numbers_Sum(); System.out.println('Polymorphism in Java'); System.out.println('add(int, int): ' + numsum.add(15, 18)); System.out.println('add(int, int, int): ' + numsum.add(5, 10, 20)); System.out.println('add(double,double): ' + numsum.add(5.5, 15.5)); } }
Оутпут
У овом програму имамо три преоптерећене методе назване адд. Прва метода узима два инт параметра, следећа метода узима три инт параметра, а трећа метода узима два двострука параметра. У зависности од броја параметара, позив методе се решава у време компајлирања и упућује се одговарајући позив.
Одвајање
Користећи апстракцију података, излажемо само битне делове апликације који су доступни кориснику. На пример, ако имамо аутомобил, не брину нас унутрашње компоненте аутомобила, већ само аутомобил разматрамо као целину.
Користећи механизам за апстракцију података, идентификујемо само потребне детаље и занемарујемо небитне детаље. Јава користи апстрактне класе и интерфејсе за постизање апстракције. Интерфејси су 100% апстрактни, јер имају само прототипове метода, а не и њихову дефиницију.
Следећи пример приказује апстрактну класу и њену употребу.
// Abstract class declaration abstract class PetAnimal { // Abstract method: should be defined in derived class public abstract void animalSound(); // non-abstract method public void print() { System.out.println('This method is example of abstraction'); } } // Derived class class Dog extends PetAnimal { //abstract method defined here public void animalSound() { System.out.println('The doggy barks'); } } class Main { public static void main(String() args) { Dog doggy = new Dog(); // Instantiate derived class and call methods doggy.animalSound(); doggy.print(); } }
Оутпут
У горњем програму имамо апстрактни разред ПетАнималс. У овоме имамо апстрактну методу „анималСоунд“. Затим креирамо класу Дог и наследимо класу ПетАнималс. У класи Пас замењујемо методу анималСоунд.
промените цхар у инт ц ++
Капсулација
Инкапсулација је скривање података или заштита података. У програмирању, инкапсулацију постижемо умотавањем података и метода које раде на тим подацима у једну јединицу.
Видео лекције: Капсулација и полиморфизам у Јави
Класа се може посматрати као јединица за инкапсулацију, тј. Имамо чланове података и методе који раде на тим члановима података у групи у једној јединици.
Правилна инкапсулација може се постићи тако да се чланови података учине приватним и да се методе које раде на тим подацима учине јавним, тако да су подаци у потпуности заштићени од спољних ентитета.
Доле наведени Јава програм показује концепт енкапсулације.
class Customer_Account { //private data of class private long customer_accountNo; private String customer_name,customer_email; private float customer_salary; //public getter/setter methods to access private data public long getAcc_no() { return customer_accountNo; } public void setAcc_no(long acc_no) { this.customer_accountNo = acc_no; } public String getName() { return customer_name; } public void setName(String name) { this.customer_name = name; } public String getEmail() { return customer_email; } public void setEmail(String email) { this.customer_email = email; } public float getSalary() { return customer_salary; } public void setSalary(float salary) { this.customer_salary = salary; } } public class Main { public static void main(String() args) { //create an object of customer_Account class Customer_Account acc=new Customer_Account(); //use setter methods to set values acc.setAcc_no(123458765432L); acc.setName('SoftwareTestingHelp'); acc.setEmail('sth@sth.com'); acc.setSalary(65000f); //use getter methods to read values System.out.println('Customer Account Number: ' + acc.getAcc_no()); System.out.println('Customer Account Details:'); System.out.println(' Customer Name: '+acc.getName()+'
'+ ' Customer Email: ' + acc.getEmail()+'
' + ' Customer Salary: ' +acc.getSalary()); } }
Оутпут
У горе наведеном програму имамо класу Цустомер_Аццоунт.
У овој класи имамо чланове података који су сви приватни. Затим за свако приватно поље пружамо геттер и сеттер методе за читање и постављање вредности, респективно. Ови гетери и постављачи су јавни. На овај начин штитимо поља података не дозвољавајући им директно приступ изван класе.
Приступ им је могућ само преко гетера и постављача. Ово показује енкапсулацију коју смо горе описали.
Често постављана питања
П # 1) Шта се подразумева под објектно оријентисаним програмирањем?
Одговор: Објектно оријентисано програмирање (ООП) је софтверска парадигма која се врти око података. У ООП-у је нагласак стављен на податке и на тај начин се проблеми изражавају у смислу објеката који су целине који се састоје од података или поља и метода које делују на тим пољима података.
На тај начин се примењује неколико карактеристичних особина ООП-а попут наследства, полиморфизма, апстракције и енкапсулације како би се осигурала сигурност података, поновна употреба итд.
П # 2) Која су 4 основна принципа ООП?
Одговор:Објектно оријентисано програмирање (ООП) има четири основна принципа:
- Наслеђивање
- Полиморфизам
- Одвајање
- Капсулација
Такође се називају и четири стуба ООП.
П # 3) Зашто се Јава назива објектно оријентисаном?
Одговор: Јава има објект класе роот из ког изводимо све остале карактеристике Јава. Тако без класе и објекта не можемо имати Јава програм. Отуда се Јава назива ООП језиком.
П # 4) Да ли је Јава искључиво објектно оријентисана?
Одговор: Не, Јава није чисти објектно оријентисани језик. Како Јава такође пружа примитивне типове података попут инт, цхар, флоат, доубле, лонг итд., Он није класификован као чисти ООП језик.
П # 5) Која је разлика између Ц ++ и Јаве?
Одговор: И Ц ++ и Јава су објектно оријентисани језици и подржавају ООП функције. Али Ц ++ је компајлирани језик. С друге стране, Јава је компајлиран као и интерпретирани језик.
Јава интерпретер извршава бајт код током извршавања и генерише излаз који га чини независним од платформе. Ц ++ међутим зависи од платформе.
Више о концепту ООПС
Класа
Класа је нацрт / прототип предмета из стварног света и она моделира стање и понашање тог предмета из стварног света.
Разредна декларација
class MyClass { // field, constructor, and // method declarations }
Class room(){ //room should have dimension. Dimension is attribute. //in the room, we are going keep things. Keeping is the function we are going to do. Keepthings (); this is a method in java. }
Предмет
Софтверски објекти су попут објеката из стварног живота са стањем и понашањем. Држава ће бити ускладиштена као поље и изложити своје понашање као методе.
Овде је соба попут генералног дизајна. У оквиру ове собе требали бисте дизајнирати дневну собу, трпезарију, спаваћу собу.
Class CookingRoom(){ Dimension is attribute. //here we should have method to keep cooking things. Keepthings(){ This method is same like room class keep things method. but it should have some more features to hold cooking items. } cooking(); }
Class LivingRoom(){ Dimension is attribute. //here we should have method to keep Living Room things. Keepthings(){ This method is same like room class keep things method. but it should have some more features to hold living room items(like tv etc). } watching tv(); }
Овде метода „Кеептхингс ()“ треба да обавља основне функције потребне за собу и треба да има додатне спецификације према класи „дневна соба“ и „класа за кување“. Дакле, две класе би требало да наследе методе у класи „собе“.
Наслеђивање
Понашање (методе) и стање једне класе наслеђене друге класе називају се наслеђивање. Методе и стање се наслеђују од родитељске класе до подређене класе.
Тако,
Class CookingRoom extends Room{ }
Class LivingRoom extends Room{ }
Полиморфизам
У биологији се полиморфизам односи на зачине који могу имати много различитих облика.
Са истим концептом у објектно оријентисаном програмирању, дете класа може наследити методе родитељске класе, такође може додати јединствене карактеристике том понашању. Полиморфизам се може постићи преоптерећењем или премошћавањем метода.
Преоптерећење
public class OverloadDemo { public int add( int a,int b) { int rs=a+b; return rs; } public int add( int a,int b,int c) { int rs=a+b+c; return rs; } public static void main(String() args) { OverloadDemo ov=new OverloadDemo(); System.out.println(ov.add(23,56,45)); System.out.println(ov.add(23,56)); } }
Превазилажење
public class Bicycle { int wheels=2; String seat; public void riding() { System.out.println('bicycle is used for riding'); } }
public class RoadBicycle extends Bicycle{ public void riding() { System.out.println('RoadBicycle is used for road riding'); } }
public class TestBicycle { public static void main(String() args) { Bicycle b=new RoadBicycle(); b.riding(); } }
ИЗЛАЗ: Овде метода класе детета замењује методу родитељске класе.
Супер Кеиворд
Кључна реч Супер је референтна променљива која се користи за упућивање на непосредни објект надређене класе. Помоћу кључне речи супер можете упутити метод родитељске класе или променљиве или конструктор.
Ова кључна реч
Ова кључна реч се користи за означавање тренутног објекта класе. Користећи ову кључну реч можете приступити тренутној променљивој инстанце класе или методи тренутне класе. Ово се може проследити као аргумент у позиву методе.
public class DemoThisKeyword { private int accno; private int balance; public void setvalues(int accno,int balance) { this.accno=accno; this.balance=balance; } public int showdata() { System.out.println(accno); System.out.println(balance); return balance; } public static void main(String() args) { // TODO Auto-generated method stub DemoThisKeyword obj =new DemoThisKeyword(); obj.setvalues(11, 100); obj.showdata(); System.out.println(obj.showdata()); } }
Градитељ
Јава конструктори су попут метода које ће бити позване када се објекат креира за класу. Конструктор треба да има исто име као и класа.
Class Myclass{ Myclass(); Method1() { } }
Током креирања објекта за класу, Мицласс миобј = нев Мицласс ();
Позваће се метода конструктора. Јава конструктор аутоматски креира конструктор за све класе по дефаулту.
public class ConstructorExampleProgram { int employee_age; String employee_name; int employee_salary; //Default constructor ConstructorExampleProgram(){ this.employee_name=Bob'; this.employee_age=30; this.employee_salary=7000; } //Parameterized constructor ConstructorExampleProgram(String n,int a,int b){ this.employee_name=n; this.employee_age=a; this.employee_salary=b; } public static void main(String args()){ ConstructorExampleProgram obj1 = new ConstructorExampleProgram(); ConstructorExampleProgram obj2 = new ConstructorExampleProgram('clare', 56,7500); System.out.println(obj1.employee_name+' '+obj1.employee_age+' '+obj1.employee_salary); System.out.println(obj2.employee_name+' '+obj2.employee_age+' '+obj2.employee_salary); } }
Правила која треба поштовати за конструктор:
- Конструктор треба да има исто име као и име класе.
- Конструктор не би требало да има повратну изјаву.
Тачке које треба напоменути:
- У објектно оријентисаном програмирању објекти су главни део програмирања.
- ООП концепти су објекат, класа, наслеђивање, полиморфизам, конструктор.
- Супер кључна реч која се користи за позивање чланова матичне класе и ово Кључна реч се користи за означавање тренутног објекта класе.
- Конструктори су попут метода које ће бити позване када се објекат креира за класу.
Закључак
Овај водич је покривао основе важних објектно-оријентисаних карактеристика које подржава Јава. Ово је само уводно упутство о ООПС-у на Јави. Све теме ћемо детаљно покрити у нашим наредним водичима. Јава подржава четири стуба ООП-а, тј. Полиморфизам, наслеђивање, апстракцију и енкапсулацију.
Поред ових карактеристика, Јава такође подржава и друге функције и ООП конструкције као што су садржавање, агрегација, прослеђивање порука итд., О чему ће бити речи у нашим наредним водичима.
Препоручено читање
- Водич за ЈАВА за почетнике: 100+ практичних Јава видео водича
- Шта је апстракција у Јави - научите на примерима
- Шта је наслеђивање у Јави - Водич са примерима
- Шта је полиморфизам у Јави - лекција са примерима
- Инкапсулација у Јави: Комплетна лекција са примерима
- Врсте наслеђивања у Јави - вишеструко наслеђивање појединачно
- ООПС концепти у Ц #: Водич за концепт објектно оријентисаног програмирања
- Објектно оријентисано програмирање на језику Ц ++