oop java introduction object oriented programming java
Acest tutorial video va introduce concepte OOP (Object Oriented Programming) în Java, cum ar fi obiect, clasă, moștenire, polimorfism, abstractizare, încapsulare etc.:
În programarea software, avem diferite tipuri de limbaje de programare. Limbile majore dintre ele sunt fie de natură procedurală, fie orientate spre obiect.
În limbajele de programare procedurală, problemele mai mari sunt împărțite în mici probleme rezolvabile. Aceste mici probleme sunt convertite în proceduri sau funcții. În acest fel, limbajul de programare procedurală accentuează mai degrabă funcțiile decât datele. Astfel, limbajele procedurale au neglijat complet datele și, prin urmare, nu asigură deloc securitatea datelor.
Această problemă a fost rezolvată de limbajul de programare orientat pe obiecte. Programarea orientată pe obiecte este un mod de proiectare și programare a software-ului prin manipularea obiectelor, iar obiectele sunt partea principală a programării.
Descoperiți întreaga noastră serie de tutoriale Java pentru începători Aici .
Ce veți învăța:
Tutoriale video despre conceptele OOPS
Conceptul OOPS în Java - Partea 1:
O privire aprofundată asupra conceptului OOPS în Java - Partea 2:
Limbajele de programare orientate pe obiecte pun accentul pe date mai mult decât funcțiile. Programarea orientată pe obiecte (OOP) se învârte în jurul obiectelor, adică o entitate în timp real.
Acest obiect conține date și metodele care operează pe aceste date într-o singură unitate. În acest fel, datele sunt protejate de lumea exterioară prin metode în interiorul obiectului. În OOP, obiectele comunică între ele prin mesaje.
Orice limbă OOP acceptă următoarele caracteristici:
- Clase
- Incapsularea
- Abstracție
- Moştenire
- Polimorfism
Toate aceste caracteristici asigură securitatea datelor și, în același timp, putem scrie și aplicații robuste. Smalltalk, C ++, Java etc. sunt câteva dintre limbajele de programare orientate obiect.
În acest tutorial, vom discuta elementele de bază ale OOP referitoare la limbajul Java.
Programare orientată pe obiecte (OOP) în Java
Java este cea mai căutată abilitate de programare în prezent. În Java, totul se bazează pe obiect. Java are o clasă rădăcină numită Object din care derivă întreaga funcționalitate Java. Astfel, în acest tutorial, vom discuta despre principalele caracteristici ale OOP referitoare la Java.
Lectură recomandată => Întrebări și răspunsuri de interviu OOP
Aici vom discuta despre modul în care Java acceptă următoarele caracteristici OOP.
- Obiect și clasă
- Clasă
- Moştenire
- Polimorfism
- Abstracție
- Incapsularea
Să discutăm fiecare dintre aceste concepte Java OOP în detaliu.
Obiect și clasă
O clasă poate fi definită ca un prototip de proiectare sau un plan. Obiectele sunt create din aceste planuri. În esență, definește un tip comun format din proprietăți și metode care funcționează pe aceste proprietăți pentru acest tip comun. Apoi definim instanțele acestei clase numite obiecte.
O clasă are multe componente așa cum se arată în figura următoare.
Un obiect reprezintă o entitate din viața reală. În Java, un obiect este o instanță a unei clase. Deci, o clasă care este un plan poate fi utilizată pentru a crea multe obiecte. Aceste obiecte comunică adesea între ele prin transmiterea mesajelor reciproce prin metode.
Tutorial video: clase și obiecte
Un obiect are de obicei:
- Un stat: Proprietățile sau atributele unui obiect la un anumit moment.
- Comportament: Metodele reprezintă comportamentul unui obiect. Metodele definesc, de asemenea, modul în care obiectele comunică.
- Identitate: Identifică obiectul dându-i un nume unic.
De exemplu, dacă avem o clasă PetAnimals.
Atunci putem defini un obiect din această clasă după cum urmează:
PetAnimals porc = PetAnimals nou.
Aici identitatea obiectului este un porc.
Mai jos este prezentat un program care demonstrează clasa și obiectul.
//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); } }
Ieșire
În clasa de mai sus, am definit o clasă Student cu două proprietăți roll_No și student_name. Apoi, în metoda principală, declarăm două obiecte de clasă, adică student1 și student2. Rețineți că aceste obiecte sunt create folosind un operator nou. Odată ce obiectele sunt create, atribuim date ambelor proprietăți ale obiectului.
În cele din urmă, imprimăm conținutul obiectului folosind operatorul „.” (Punct).
Vom afla mai multe despre cursuri și obiecte în subiectele noastre specifice de tutoriale OOP.
Moştenire
Moștenirea este una dintre cele mai importante caracteristici ale POO. Prin moștenire, Java promovează reutilizarea codului.
Deci, ce este o moștenire în Java?
Moștenirea este un mecanism în Java în care o clasă poate moșteni proprietățile altei clase. Proprietățile care pot fi moștenite includ membrii de date și metode ale clasei.
Clasa care moștenește proprietățile altei clase se numește subclasă. Clasa moștenită este cunoscută sub numele de clasa „super” în Java.
Prin moștenirea clasei, subclasa nu numai că moștenește proprietățile, ci și reutilizează codul, deoarece programatorul nu trebuie să scrie din nou codul, atunci când îl poate moșteni direct folosind moștenire.
În Java, moștenirea se realizează prin utilizarea cuvântului cheie „extends”. Acest cuvânt cheie extinde este utilizat în definiția clasei și este urmat de numele clasei care urmează să fie moștenit.
De exemplu,dacă există două clase, A și B și A urmează să fie moștenită de B, atunci această moștenire este scrisă în Java ca:
class B extends A { …… }
Așa cum am menționat deja, aici A este superclasa sau clasa de bază sau clasa părinte. B este o subclasă, clasă derivată sau clasă copil.
Moștenirea este împărțită în continuare în următoarele tipuri.
Java acceptă moștenirea unică, pe mai multe niveluri și ierarhizată.
Rețineți că Java nu acceptă moșteniri multiple. Java, de asemenea, nu acceptă moștenirea hibridă, care este o combinație de moșteniri multiple și ierarhice.
Mai jos este prezentat un exemplu de program de moștenire unică în Java.
//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)); } }
Ieșire
În programul de mai sus, avem un angajat din clasa de bază. Avem un alt dezvoltator de clasă care moștenește din clasa Angajați. În metoda principală, putem vedea că declarând un obiect al clasei Developer putem accesa nu numai proprietățile clasei Developer, ci și ale clasei Employee, deoarece este moștenită de clasa Developer.
Polimorfism
Polimorfismul este încă o altă caracteristică importantă a POO. Polimorfismul este capacitatea limbajului de a permite obiectelor sau entităților să-și asume mai multe forme. De exemplu, o metodă care are diferite implementări este polimorfă în Java.
Polimorfismul este de două tipuri în Java:
- Polimorfism de suprasarcină sau timp de compilare: În polimorfismul de compilare, apelul la metoda polimorfă sau supraîncărcată este rezolvat la momentul compilării.
- Polimorfism general sau de execuție: În polimorfismul de execuție, apelul la o metodă suprascrisă în programul Java este rezolvat la execuție.
Vom discuta polimorfismul în detaliu în tutorialele noastre ulterioare.
Dat mai jos este un exemplu de polimorfism în timp de compilare în Java în care avem metoda add care este supraîncărcată pentru a efectua adăugarea cu diferite tipuri de operanzi.
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)); } }
Ieșire
În acest program, avem trei metode supraîncărcate denumite add. Prima metodă ia doi parametri int, metoda următoare ia trei parametri int și a treia metodă ia doi parametri dubli. În funcție de numărul de parametri, apelul metodei este rezolvat la compilare și se efectuează apelul corespunzător.
Abstracție
Folosind abstractizarea datelor, expunem doar părțile esențiale ale aplicației care sunt accesibile utilizatorului. De exemplu, dacă avem o mașină, nu ne preocupă componentele interne ale mașinii, ci mai degrabă luăm în considerare mașina doar ca un întreg.
Folosind un mecanism de extragere a datelor, identificăm doar detaliile necesare și ignorăm detaliile irelevante. Java folosește clase și interfețe abstracte pentru a realiza abstractizarea. Interfețele sunt 100% abstracte deoarece au doar prototipuri de metodă și nu definiția lor.
Exemplul de mai jos prezintă o clasă abstractă și utilizarea acesteia.
// 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(); } }
Ieșire
În programul de mai sus, avem o clasă abstractă PetAnimals. În aceasta, avem o metodă abstractă „animalSound”. Apoi creăm o clasă Dog și moștenim clasa PetAnimals. În clasa Câini, înlocuim metoda animalSound.
întrebări de interviu despre săpun și servicii web odihnitoare
Incapsularea
Incapsularea este ascunderea datelor sau protejarea datelor. În programare, realizăm încapsularea prin împachetarea datelor și a metodelor care operează pe acele date sub o singură unitate.
Tutorial video: încapsulare și polimorfism în Java
O clasă poate fi privită ca o unitate de încapsulare, adică avem membri de date și metode care operează pe acești membri de date, grupați într-o singură unitate.
O încapsulare adecvată poate fi realizată făcând membrii de date private și dispunând de metode publice care operează pe aceste date, astfel încât datele să fie complet protejate de entitățile externe.
Programul Java de mai jos demonstrează conceptul de încapsulare.
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()); } }
Ieșire
În programul de mai sus, avem o clasă Customer_Account.
În această clasă, avem membri de date care sunt toți privați. Apoi, pentru fiecare câmp privat, oferim metode getter și setter pentru a citi și a seta valori respectiv. Acești getters și seters sunt publici. În acest fel protejăm câmpurile de date, nepermițându-le accesul direct din afara clasei.
Acestea pot fi accesate numai prin getters și seteri. Aceasta demonstrează încapsularea pe care am descris-o mai sus.
întrebări frecvente
Q # 1) Ce se înțelege prin programare orientată pe obiecte?
Răspuns: Programarea orientată pe obiecte (OOP) este o paradigmă software care se învârte în jurul datelor. În POO, accentul este pus pe date și astfel problemele sunt exprimate în termeni de obiecte care sunt entități constând din date sau câmpuri și metode care operează pe aceste câmpuri de date.
Procedând astfel, se aplică mai multe caracteristici distinctive ale POO, cum ar fi Moștenirea, Polimorfismul, Abstracția și Encapsularea, pentru a asigura siguranța datelor, reutilizarea etc.
Q # 2) Care sunt cele 4 principii de bază ale POO?
Răspuns:Programarea orientată pe obiecte (OOP) are patru principii de bază:
- Moştenire
- Polimorfism
- Abstracție
- Incapsularea
Ele sunt, de asemenea, numite patru piloni ai POO.
Î. # 3) De ce se numește Java Orientat pe obiecte?
Răspuns: Java are un obiect de clasă rădăcină din care derivăm toate celelalte caracteristici ale Java. Astfel, fără clasă și obiect, nu putem avea un program Java. Prin urmare, Java este numit limbaj OOP.
Q # 4) Java este pur orientat spre obiecte?
Răspuns: Nu, Java nu este un limbaj pur orientat pe obiecte. Deoarece Java oferă și tipuri de date primitive, cum ar fi int, char, float, double, long etc., acesta nu este clasificat ca limbaj OOP pur.
Q # 5) Care este diferența dintre C ++ și Java?
Răspuns: Atât C ++ cât și Java sunt limbaje orientate pe obiecte și acceptă caracteristici OOP. Dar C ++ este un limbaj compilat. Java, pe de altă parte, este compilat, precum și un limbaj interpretat.
Interpretorul Java execută codul de octeți în timp de rulare și generează ieșire care îl face independent de platformă. Cu toate acestea, C ++ depinde de platformă.
Mai multe despre OOPS Concept
Clasă
Clasa este un plan / prototip al unui obiect din lumea reală și modelează starea și comportamentul acelui obiect din lumea reală.
Declarație de clasă
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. }
Obiect
Obiectele software sunt ca obiecte din viața reală cu stare și comportament. Starea va fi stocată ca un câmp și își va expune comportamentul ca metode.
Aici camera este ca un design general. În această cameră, ar trebui să proiectați o cameră de zi, o cameră de gătit, un dormitor.
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(); }
Aici metoda „Keepthings ()” ar trebui să îndeplinească funcționalitățile de bază necesare pentru cameră și ar trebui să aibă specificații suplimentare în funcție de clasa „cameră de zi” și cerința clasei „cameră de gătit”. Deci, cele două clase ar trebui să moștenească metodele din clasa „cameră”.
Moştenire
Comportamentul (metodele) și starea unei clase moștenite celeilalte clase se numesc moștenire. Metodele și starea sunt moștenite de la clasa părinte la clasa copil.
Asa de,
Class CookingRoom extends Room{ }
Class LivingRoom extends Room{ }
Polimorfism
În biologie, polimorfismul se referă la condimentele care pot avea multe forme diferite.
Cu același concept în programarea orientată pe obiecte, clasa copil poate moșteni metodele sale de clasă părinte, de asemenea, poate adăuga caracteristici unice comportamentului respectiv. Polimorfismul poate fi realizat prin supraîncărcarea sau suprascrierea metodei.
Suprasolicitare
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)); } }
Suprasolicitarea
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(); } }
IEȘIRE: Aici metoda clasei copil suprascrie metoda clasei părinte.
Super cuvânt cheie
Cuvântul cheie super este o variabilă de referință care este utilizată pentru a se referi la obiectul de clasă părinte imediat. Cu super cuvânt cheie, puteți consulta metoda clasei părinte sau variabilele sau constructorul.
Acest cuvânt cheie
Acest cuvânt cheie este utilizat pentru a se referi la obiectul de clasă curent. Folosind acest cuvânt cheie, puteți accesa variabila de instanță de clasă curentă sau metoda de clasă curentă. Acesta poate fi transmis ca argument în apelul metodei.
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()); } }
Constructor
Constructorii Java sunt ca niște metode care vor fi apelate atunci când obiectul este creat pentru clasă. Constructorul ar trebui să aibă același nume ca și clasa.
Class Myclass{ Myclass(); Method1() { } }
În timp ce creați un obiect pentru clasă, Myclass myobj = new Myclass ();
Se va apela metoda constructorului. Constructorul este creat automat de compilatorul Java pentru toate clasele în mod implicit.
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); } }
Reguli care trebuie respectate pentru constructor:
- Constructorul ar trebui să aibă același nume ca și numele clasei.
- Constructorul nu ar trebui să aibă o declarație return.
Puncte de remarcat:
- În programarea orientată pe obiecte, obiectele reprezintă partea principală a programării.
- Conceptele POO sunt obiect, clasă, moștenire, polimorfism, constructor.
- Super cuvânt cheie folosit pentru a se referi la membrii clasei părinte și acest cuvânt cheie este folosit pentru a se referi la un obiect de clasă curent.
- Constructorii sunt ca niște metode care vor fi apelate atunci când obiectul este creat pentru clasă.
Concluzie
Acest tutorial a acoperit elementele de bază ale caracteristicilor importante orientate pe obiecte, acceptate de Java. Acesta este doar un tutorial introductiv despre OOPS în Java. Vom acoperi toate subiectele în detaliu în tutorialele noastre ulterioare. Java acceptă patru piloni ai POO, adică Polimorfism, Moștenire, Abstracție și Encapsulare.
În afară de aceste caracteristici, Java acceptă și celelalte caracteristici și construcții OOP, cum ar fi confinarea, agregarea, transmiterea mesajelor etc., care vor fi discutate în tutorialele noastre viitoare.
Lectură recomandată
- Tutorial JAVA pentru începători: peste 100 de cursuri video Java practice
- Ce este abstractizarea în Java - Aflați cu exemple
- Ce este moștenirea în Java - Tutorial cu exemple
- Ce este polimorfismul în Java - Tutorial cu exemple
- Incapsulare în Java: Tutorial complet cu exemple
- Tipuri de moștenire în Java - Moștenire multiplă Vs
- Concepte OOPS în C #: Tutorial Concept de programare orientată pe obiecte
- Programare orientată pe obiecte în C ++