oop java introduction object oriented programming java
Tento videonávod predstaví koncepty OOP (Object Oriented Programming) v Jave, ako sú Object, Class, Inheritance, Polymorphism, Abstraction, Encapsulation atď:
V programovaní softvéru máme rôzne typy programovacích jazykov. Hlavné jazyky medzi nimi sú buď procedurálne, alebo objektovo orientované.
V procedurálnych programovacích jazykoch sú väčšie problémy rozdelené na malé riešiteľné problémy. Tieto malé problémy sa konvertujú na postupy alebo funkcie. Týmto spôsobom procedurálny programovací jazyk zdôrazňuje skôr funkcie ako dáta. Procedurálne jazyky tak úplne zanedbali údaje, a preto vôbec nezabezpečujú bezpečnosť údajov.
O tento problém sa postaral objektovo orientovaný programovací jazyk. Objektovo orientované programovanie je spôsob navrhovania a programovania softvéru manipuláciou s objektmi, ktoré sú hlavnou časťou programovania.
Objavte celú našu sériu Java tutoriálov pre začiatočníkov tu .
Čo sa dozviete:
Videonávody o koncepciách OOPS
Koncept OOPS v Jave - 1. časť:
Podrobný pohľad na koncepciu OOPS v Jave - časť 2:
Objektovo orientované programovacie jazyky kladú na dáta väčší dôraz ako na funkcie. Objektovo orientované programovanie (OOP) sa točí okolo objektov, tj. Entity v reálnom čase.
Tento objekt zhromažďuje údaje a metódy, ktoré s týmito údajmi pracujú, do jednej jednotky. Týmto spôsobom sú údaje chránené pred vonkajším svetom pomocou metód vnútri objektu. V OOP objekty medzi sebou komunikujú prostredníctvom správ.
Akýkoľvek jazyk OOP podporuje nasledujúce funkcie:
- Triedy
- Zapuzdrenie
- Abstrakcia
- Dedenie
- Polymorfizmus
Všetky tieto vlastnosti zaisťujú zabezpečenie dát a zároveň dokážeme písať aj robustné aplikácie. Smalltalk, C ++, Java atď. Sú niektoré z objektovo orientovaných programovacích jazykov.
V tomto výučbe sa budeme venovať základom OOP týkajúcich sa jazyka Java.
Objektovo orientované programovanie (OOP) v Jave
Java je v súčasnosti najvyhľadávanejšou programátorskou schopnosťou. V Jave je všetko založené na objekte. Java má koreňovú triedu nazvanú Object, od ktorej je odvodená celá funkčnosť Javy. V tomto návode teda budeme diskutovať o hlavných vlastnostiach OOP týkajúcich sa Javy.
Odporúčané čítanie => OOP Interview Otázky a odpovede
Tu budeme diskutovať o tom, ako Java podporuje nasledujúce funkcie OOP.
- Objekt a trieda
- Trieda
- Dedenie
- Polymorfizmus
- Abstrakcia
- Zapuzdrenie
Pozrime sa podrobne na každý z týchto konceptov Java OOP.
Objekt a trieda
Triedu možno definovať ako prototyp dizajnu alebo plán. Z týchto plánov sú vytvorené objekty. V podstate definuje bežný typ pozostávajúci z vlastností a metód, ktoré pracujú s týmito vlastnosťami pre tento bežný typ. Potom definujeme inštancie tejto triedy nazývané objekty.
Trieda má mnoho komponentov, ako je znázornené na nasledujúcom obrázku.
Objekt predstavuje entitu skutočného života. V prostredí Java je objekt inštanciou triedy. Takže trieda, ktorá je modrotlačou, sa dá použiť na vytvorenie mnohých objektov. Tieto objekty často navzájom komunikujú vzájomným odovzdávaním správ pomocou metód.
Výukový program Video: Triedy a objekty
Objekt má zvyčajne:
- Štát: Vlastnosti alebo atribúty objektu v konkrétnom čase.
- Správanie: Metódy predstavujú správanie objektu. Metódy tiež definujú, ako objekty komunikujú.
- Totožnosť: Identifikuje objekt tým, že mu dá jedinečný názov.
Napríklad, ak máme triedu PetAnimals.
Potom môžeme objekt tejto triedy definovať nasledovne:
PetAnimals pig = nové PetAnimals.
Tu je identita objektu prasa.
Ďalej je uvedený program, ktorý demonštruje triedu a objekt.
//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); } }
Výkon
Vo vyššie uvedenej triede sme definovali triedu Student s dvoma vlastnosťami roll_No a student_name. Potom v hlavnej metóde deklarujeme dva objekty triedy, tj. Študent1 a študent2. Upozorňujeme, že tieto objekty sa vytvárajú pomocou nového operátora. Po vytvorení objektov priradíme údaje k obom vlastnostiam objektu.
Nakoniec obsah objektu vytlačíme pomocou operátora „.“ (Bodka).
Viac sa o triedach a objektoch dozvieme v našich konkrétnych témach tutoriálov OOP.
Dedenie
Dedenie je jednou z najdôležitejších charakteristík OOP. Prostredníctvom dedičstva podporuje Java opätovnú použiteľnosť kódu.
Čo je to dedičstvo v Jave?
Dedenie je mechanizmus v Jave, v ktorom môže jedna trieda dediť vlastnosti inej triedy. Medzi vlastnosti, ktoré sa dajú dediť, patria dátové členy a metódy triedy.
Trieda, ktorá dedí vlastnosti inej triedy, sa nazýva podtrieda. Zdedená trieda je v Jave známa ako „super“ trieda.
Zdedením triedy podtrieda nielen zdedí vlastnosti, ale tiež znova použije kód, pretože programátor nemusí znova písať kód, keď ho môže priamo dediť pomocou dedičstva.
V prostredí Java sa dedičstvo dosahuje použitím kľúčového slova „extends“. Toto kľúčové slovo extends sa používa v definícii triedy a za ním nasleduje názov triedy, ktorý sa má dediť.
Napríklad,ak existujú dve triedy, A a B a A má byť zdedené B, potom je toto dedičstvo napísané v Jave ako:
class B extends A { …… }
Ako už bolo spomenuté, tu A je nadtrieda alebo základná trieda alebo nadradená trieda. B je podtrieda, odvodená trieda alebo podradená trieda.
Dedenie sa ďalej delí na nasledujúce typy.
Java podporuje jedno, viacúrovňové a hierarchické dedičstvo.
Upozorňujeme, že Java nepodporuje viacnásobné dedičstvo. Java tiež nepodporuje hybridné dedičstvo, ktoré je kombináciou viacerých a hierarchických dedičstiev.
Ďalej je uvedený príklad programu Single Inheritance v Jave.
//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)); } }
Výkon
Vo vyššie uvedenom programe máme základnú triedu Employee. Máme ďalšieho vývojára triedy, ktorý dedí z triedy Employee. V hlavnej metóde vidíme, že vyhlásením za objekt triedy Developer môžeme získať prístup nielen k vlastnostiam triedy Developer, ale aj k triede Employee, ktorá je dedená triedou Developer.
Polymorfizmus
Polymorfizmus je ďalším dôležitým znakom OOP. Polymorfizmus je schopnosť jazyka umožniť objektom alebo entitám nadobúdať rôzne formy. Napríklad, metóda, ktorá má rôzne implementácie, je v Jave polymorfná.
Polymorfizmus má v Jave dva typy:
- Preťaženie alebo kompilácia časového polymorfizmu: V polymorfizme v čase kompilácie sa volanie v prípade polymorfnej alebo preťaženej metódy rieši v čase kompilácie.
- Prepísanie alebo runtime polymorfizmus: V polymorfizme za behu je volanie za účelom prepísania metódy v programe Java vyriešené za behu.
Polymorfizmu sa budeme podrobne venovať v našich ďalších tutoriáloch.
Nižšie je uvedený príklad polymorfizmu v čase kompilácie v Jave, kde máme metódu add, ktorá je preťažená na vykonávanie sčítania s rôznymi typmi operandov.
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)); } }
Výkon
V tomto programe máme tri preťažené metódy s názvom add. Prvá metóda má dva parametre int, ďalšia metóda má tri parametre int a tretia metóda má dva dvojité parametre. V závislosti od počtu parametrov sa volanie metódy vyrieši v čase kompilácie a uskutoční sa príslušné volanie.
Abstrakcia
Pomocou abstrakcie údajov vystavujeme iba základné časti aplikácie, ktoré sú prístupné používateľovi. Napríklad, ak máme auto, nezaujímajú nás vnútorné komponenty automobilu, ale auto považujeme iba za celok.
Pomocou mechanizmu abstrakcie údajov identifikujeme iba nevyhnutné podrobnosti a ignorujeme nepodstatné podrobnosti. Java používa na dosiahnutie abstrakcie abstraktné triedy a rozhrania. Rozhrania sú stopercentne abstraktné, pretože majú iba prototypy metód, a nie ich definíciu.
Nasledujúci príklad ukazuje abstraktnú triedu a jej použitie.
// 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(); } }
Výkon
Vo vyššie uvedenom programe máme abstraktnú triedu PetAnimals. V tomto máme abstraktnú metódu „animalSound“. Potom vytvoríme triedu Dog a zdedíme triedu PetAnimals. V triede Pes prepíšeme metódu animalSound.
najlepší firewall pre Windows 7 64 bit
Zapuzdrenie
Zapuzdrenie skrýva údaje alebo ich chráni. V programovaní dosiahneme zapuzdrenie zabalením údajov a metód pracujúcich na týchto údajoch do jednej jednotky.
Výukový program Video: Zapuzdrenie a polymorfizmus v Jave
Na triedu sa dá pozerať ako na zapuzdrovaciu jednotku, to znamená, že máme dátové členy a metódy fungujúce na týchto dátových členoch ako spojené do jednej jednotky.
Správne zapuzdrenie sa dá dosiahnuť tak, že sa dátové členy stanú súkromnými a metódy fungujúce na týchto údajoch budú verejné, aby boli údaje úplne chránené pred vonkajšími entitami.
Nižšie uvedený program Java demonštruje koncepciu zapuzdrenia.
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()); } }
Výkon
Vo vyššie uvedenom programe máme triedu Customer_Account.
V tejto triede máme dátové členy, ktoré sú všetky súkromné. Potom pre každé súkromné pole poskytujeme metódy getra a settera na čítanie a nastavenie hodnôt. Títo zakladatelia a zakladatelia sú verejní. Týmto spôsobom chránime dátové polia tým, že im neumožníme žiadny prístup priamo mimo triedy.
Prístup k nim je možný iba prostredníctvom getrov a setterov. Toto demonštruje zapuzdrenie, ktoré sme opísali vyššie.
často kladené otázky
Otázka 1) Čo sa rozumie pod objektovo orientovaným programovaním?
Odpoveď: Objektovo orientované programovanie (OOP) je softvérová paradigma, ktorá sa točí okolo údajov. V OOP sa kladie dôraz na dáta a teda problémy sa vyjadrujú v zmysle objektov, ktoré sú entitami pozostávajúcimi z dát alebo polí a metód, ktoré na týchto dátových poliach fungujú.
Týmto spôsobom sa na zaistenie bezpečnosti údajov, opätovnej použiteľnosti uplatňuje niekoľko charakteristických znakov OOP, ako je dedičnosť, polymorfizmus, abstrakcia a zapuzdrenie.
Otázka 2) Aké sú 4 základné princípy OOP?
Odpoveď:Objektovo orientované programovanie (OOP) má štyri základné princípy:
- Dedenie
- Polymorfizmus
- Abstrakcia
- Zapuzdrenie
Hovorí sa im tiež štyri stĺpy OOP.
Otázka 3) Prečo sa Java nazýva Objektovo orientovaná?
Odpoveď: Java má objekt triedy root, z ktorého odvodzujeme všetky ostatné vlastnosti Java. Bez triedy a objektu teda nemôžeme mať program Java. Preto sa Java nazýva jazyk OOP.
Otázka č. 4) Je Java čisto objektovo orientovaná?
Odpoveď: Nie, Java nie je čistý objektovo orientovaný jazyk. Pretože Java poskytuje aj primitívne dátové typy ako int, char, float, double, long atď., Nie je klasifikovaný ako čistý jazyk OOP.
Otázka č. 5) Aký je rozdiel medzi C ++ a Java?
Odpoveď: C ++ aj Java sú objektovo orientované jazyky a podporujú funkcie OOP. Ale C ++ je kompilovaný jazyk. Na druhej strane je Java kompilovaná rovnako ako interpretovaný jazyk.
Interpret Java vykonáva bajtový kód za behu a generuje výstup, ktorý ho robí nezávislým na platforme. C ++ je však závislý na platforme.
Viac o koncepcii OOPS
Trieda
Trieda je návrhom / prototypom objektu v reálnom svete a modeluje stav a správanie sa tohto objektu v reálnom svete.
Vyhlásenie triedy
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. }
Objekt
Softvérové objekty sú ako objekty v reálnom živote so stavom a správaním. Stav bude uložený ako pole a jeho správanie bude vystavené ako metódy.
Tu je izba ako všeobecný dizajn. V tejto miestnosti by ste mali navrhnúť obývaciu izbu, varnú miestnosť, spálňu.
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(); }
Tu by metóda „Keepthings ()“ mala robiť základné funkcionality požadované pre miestnosť a mala by mať ďalšiu špecifikáciu podľa požiadaviek na triedy „obývacej izby“ a „varnej miestnosti“. Tieto dve triedy by teda mali zdediť metódy v triede „room“.
Dedenie
Správanie (metódy) a stav jednej triedy zdedenej po druhej triede sa nazývajú dedičnosť. Metódy a stav sa dedia z nadradenej triedy do podradenej triedy.
Takže
Class CookingRoom extends Room{ }
Class LivingRoom extends Room{ }
Polymorfizmus
V biológii sa polymorfizmus vzťahuje na koreniny, ktoré môžu mať veľa rôznych foriem.
S rovnakým konceptom v objektovo orientovanom programovaní môže podradená trieda dediť svoje metódy nadradenej triedy, taktiež môže k tomuto správaniu pridať jedinečné vlastnosti. Polymorfizmus je možné dosiahnuť preťažením alebo prepísaním metódy.
Preťaženie
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)); } }
Naliehavé
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(); } }
VÝKON: Tu metóda podradenej triedy prepíše metódu nadradenej triedy.
Super kľúčové slovo
Kľúčové slovo Super je referenčná premenná, ktorá sa používa na označenie objektu bezprostrednej nadradenej triedy. Pomocou kľúčového slova super môžete odkázať na metódu rodičovskej triedy alebo premenné alebo konštruktor.
Toto kľúčové slovo
Toto kľúčové slovo sa používa na označenie aktuálneho objektu triedy. Pomocou tohto kľúčového slova môžete získať prístup k premennej inštancie aktuálnej triedy alebo k metóde aktuálnej triedy. Toto je možné odovzdať ako argument volania metódy.
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()); } }
Staviteľ
Konštruktory Java sú podobné metódam, ktoré sa vyvolajú pri vytváraní objektu pre triedu. Konštruktor by mal mať rovnaký názov ako trieda.
Class Myclass{ Myclass(); Method1() { } }
Pri vytváraní objektu pre triedu Myclass myobj = new Myclass ();
Bude sa volať metóda konštruktora. Konštruktor je predvolene automaticky vytváraný kompilátorom Java pre všetky triedy.
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); } }
Pravidlá, ktoré treba dodržiavať pre staviteľa:
- Konštruktor by mal mať rovnaký názov ako názov triedy.
- Konštruktor by nemal mať návratový príkaz.
Je potrebné poznamenať:
- V objektovo orientovanom programovaní sú objekty hlavnou časťou programovania.
- Pojmy OOP sú objekt, trieda, dedičnosť, polymorfizmus, konštruktor.
- Super kľúčové slovo použité na označenie členov nadradenej triedy a toto kľúčové slovo sa používa na označenie aktuálneho objektu triedy.
- Konštruktory sú podobné metódam, ktoré sa vyvolajú pri vytváraní objektu pre triedu.
Záver
Tento výukový program sa venoval základom dôležitých objektovo orientovaných funkcií podporovaných jazykom Java. Toto je iba úvodný tutoriál o OOPS v Jave. Všetkým témam sa budeme podrobne venovať v ďalších našich tutoriáloch. Java podporuje štyri piliere OOP, t. J. Polymorfizmus, dedičnosť, abstrakcia a zapuzdrenie.
Okrem týchto funkcií podporuje Java aj ďalšie funkcie a konštrukcie OOP, ako sú zadržiavanie, agregácia, odovzdávanie správ atď., O ktorých sa bude diskutovať v našich pripravovaných tutoriáloch.
Odporúčané čítanie
- Výukový program JAVA pre začiatočníkov: viac ako 100 praktických výučbových programov Java Video
- Čo je to abstrakcia v prostredí Java - naučte sa na príkladoch
- Čo je dedenie v prostredí Java - návod s príkladmi
- Čo je polymorfizmus v Jave - návod s príkladmi
- Zapuzdrenie v prostredí Java: Kompletný návod s príkladmi
- Druhy dedenia v Jave - jednoduché viacnásobné dedenie
- Koncepty OOPS v C #: Výukový program koncepcie programovania zameraného na objekt
- Objektovo orientované programovanie v C ++