oop java introduction object oriented programming java
Tento videonávod představí koncepty OOP (Object Oriented Programming) v Javě, jako jsou Object, Class, Inheritance, Polymorphism, Abstraction, Encapsulation atd.:
V programování softwaru máme různé typy programovacích jazyků. Hlavní jazyky mezi nimi jsou buď procedurální, nebo objektově orientované.
V procedurálních programovacích jazycích jsou větší problémy rozděleny na malé řešitelné problémy. Tyto malé problémy se převádějí na postupy nebo funkce. Tímto způsobem procedurální programovací jazyk zdůrazňuje spíše funkce než data. Procedurální jazyky tedy úplně zanedbávaly data, a proto vůbec nezajišťují bezpečnost dat.
O tento problém se postaral objektově orientovaný programovací jazyk. Objektově orientované programování je způsob navrhování a programování softwaru manipulací s objekty a objekty jsou hlavní částí programování.
Objevte celou naši sérii výukových programů Java pro začátečníky tady .
Co se naučíte:
Výukové videonávody o koncepcích OOPS
Koncept OOPS v Javě - Část 1:
Podrobný pohled na koncept OOPS v Javě - část 2:
Objektově orientované programovací jazyky zdůrazňují data více než funkce. Objektově orientované programování (OOP) se točí kolem objektů, tj. Entity v reálném čase.
Tento objekt seskupuje data a metody, které s těmito daty pracují, do jedné jednotky. Tímto způsobem jsou data chráněna před vnějším světem pomocí metod uvnitř objektu. V OOP objekty vzájemně komunikují prostřednictvím zpráv.
Libovolný jazyk OOP podporuje následující funkce:
- Třídy
- Zapouzdření
- Abstrakce
- Dědictví
- Polymorfismus
Všechny tyto funkce zajišťují zabezpečení dat a zároveň můžeme také psát robustní aplikace. Smalltalk, C ++, Java atd. Jsou některé z objektově orientovaných programovacích jazyků.
V tomto tutoriálu probereme základy OOP týkající se jazyka Java.
Objektově orientované programování (OOP) v Javě
Java je v současné době nejvyhledávanější programovací dovedností. V Javě je vše založeno na objektu. Java má kořenovou třídu nazvanou Object, od které je odvozena celá funkčnost Java. V tomto tutoriálu tedy probereme hlavní rysy OOP týkající se Javy.
Doporučené čtení => OOP Interview Otázky a odpovědi
Zde budeme diskutovat o tom, jak Java podporuje následující funkce OOP.
- Objekt a třída
- Třída
- Dědictví
- Polymorfismus
- Abstrakce
- Zapouzdření
Pojďme si podrobně promluvit o každém z těchto konceptů Java OOP.
Objekt a třída
Třídu lze definovat jako prototyp návrhu nebo plán. Z těchto plánů jsou vytvářeny objekty. V podstatě definuje společný typ skládající se z vlastností a metod, které fungují na těchto vlastnostech pro tento běžný typ. Poté definujeme instance této třídy zvané objekty.
Třída má mnoho komponent, jak ukazuje následující obrázek.
Objekt představuje entitu skutečného života. V Javě je objekt instancí třídy. Takže třída, která je plánem, může být použita k vytvoření mnoha objektů. Tyto objekty často spolu komunikují předáváním zpráv prostřednictvím metod.
Výukový program Video: Třídy a objekty
Objekt má obvykle:
- Stát: Vlastnosti nebo atributy objektu v určitém čase.
- Chování: Metody představují chování objektu. Metody také definují, jak objekty komunikují.
- Identita: Identifikuje objekt tím, že mu dá jedinečný název.
Například, pokud máme třídu PetAnimals.
Pak můžeme definovat objekt této třídy následovně:
PetAnimals pig = nové PetAnimals.
Zde je identita objektu prase.
Níže je uveden program, který předvádí třídu 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ýstup
Ve výše uvedené třídě jsme definovali třídu Student se dvěma vlastnostmi roll_No a student_name. Potom v hlavní metodě deklarujeme dva objekty třídy, tj. Student1 a student2. Tyto objekty jsou vytvářeny pomocí nového operátoru. Jakmile jsou objekty vytvořeny, přiřadíme data oběma vlastnostem objektu.
Nakonec obsah objektu vytiskneme pomocí operátoru „.“ (Tečka).
Další informace o třídách a objektech se dozvíme v našich konkrétních tématech cvičení OOP.
Dědictví
Dědičnost je jednou z nejdůležitějších charakteristik OOP. Prostřednictvím dědičnosti podporuje Java opětovné použití kódu.
Co je tedy dědictví v Javě?
Dědičnost je mechanismus v Javě, ve kterém může jedna třída zdědit vlastnosti jiné třídy. Vlastnosti, které lze zdědit, zahrnují datové členy a metody třídy.
Třída, která dědí vlastnosti jiné třídy, se nazývá podtřída. Zděděná třída je v Javě známá jako „super“ třída.
Zděděním třídy podtřída nejen zdědí vlastnosti, ale také znovu použije kód, protože programátor nemusí znovu psát kód, když jej může přímo zdědit pomocí dědičnosti.
V Javě se dědičnosti dosahuje pomocí klíčového slova „extends“. Toto klíčové slovo extends se používá v definici třídy a je následováno názvem třídy, který má být zděděn.
Například,pokud existují dvě třídy, A a B, a A má být zděděno B, pak je tato dědičnost zapsána v Javě jako:
class B extends A { …… }
Jak již bylo zmíněno, zde A je nadtřída nebo základní třída nebo nadřazená třída. B je podtřída, odvozená třída nebo podřízená třída.
Dědičnost se dále dělí na následující typy.
Java podporuje jedno, víceúrovňové a hierarchické dědictví.
Všimněte si, že Java nepodporuje více dědičností. Java také nepodporuje hybridní dědičnost, což je kombinace vícenásobných a hierarchických dědičností.
Níže je uveden ukázkový program Single Inheritance v Javě.
//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ýstup
Ve výše uvedeném programu máme základní třídu Zaměstnanec. Máme dalšího vývojáře třídy, který dědí ze třídy Employee. V hlavní metodě vidíme, že deklarováním objektu třídy Developer můžeme získat přístup nejen k vlastnostem třídy Developer, ale také ke třídě Employee, protože je zděděna třídou Developer.
Polymorfismus
Polymorfismus je dalším důležitým rysem OOP. Polymorfismus je schopnost jazyka umožnit objektům nebo entitám převzít více forem. Například, metoda, která má různé implementace, je v Javě polymorfní.
Polymorfismus má v Javě dva typy:
- Přetížení nebo kompilace časového polymorfismu: V polymorfismu v době kompilace je volání polymorfní nebo přetížené metody vyřešeno v době kompilace.
- Přepsání nebo běhový polymorfismus: V runtime polymorfismu je volání přepsané metody v programu Java vyřešeno za běhu.
Polymorfismu se budeme podrobně věnovat v následujících výukách.
Níže je uveden příklad polymorfismu v době kompilace v Javě, kde máme metodu add, která je přetížena, aby provedla přidání s různými typy operandů.
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ýstup
V tomto programu máme tři přetížené metody s názvem add. První metoda bere dva int parametry, další metoda bere tři int parametry a třetí metoda bere dva dvojité parametry. V závislosti na počtu parametrů je volání metody vyřešeno v době kompilace a je provedeno příslušné volání.
Abstrakce
Pomocí abstrakce dat vystavujeme pouze základní části aplikace, které jsou zpřístupněny uživateli. Například, pokud máme auto, nezajímáme se o jeho vnitřní součásti, spíše ho považujeme pouze za celek.
Pomocí mechanismu abstrakce dat identifikujeme pouze nezbytné podrobnosti a ignorujeme irelevantní podrobnosti. Java používá abstraktní třídy a rozhraní k dosažení abstrakce. Rozhraní jsou 100% abstraktní, protože mají pouze prototypy metod, nikoli jejich definici.
Níže uvedený příklad ukazuje abstraktní třídu a její použití.
// 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ýstup
Ve výše uvedeném programu máme abstraktní třídu PetAnimals. V tomto máme abstraktní metodu „animalSound“. Pak vytvoříme třídu Dog a zdědíme třídu PetAnimals. Ve třídě Dog přepíšeme metodu animalSound.
b + strom vs b strom
Zapouzdření
Zapouzdření skrývá data nebo chrání data. V programování dosáhneme zapouzdření zabalením dat a metod pracujících na těchto datech do jedné jednotky.
Výukové video: Zapouzdření a polymorfismus v Javě
Třídu lze považovat za zapouzdřovací jednotku, tj. Máme datové členy a metody, které na těchto datových členech fungují, v jedné jednotce.
Správné zapouzdření lze dosáhnout tím, že datové členy budou soukromé a že budou metody fungující na těchto datech veřejné, takže data budou zcela chráněna před vnějšími entitami.
Níže uvedený program Java demonstruje koncept zapouzdření.
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ýstup
Ve výše uvedeném programu máme třídu Customer_Account.
V této třídě máme datové členy, které jsou všechny soukromé. Pak pro každé soukromé pole poskytujeme metody getter a setter pro čtení a nastavení hodnot. Tito getři a setři jsou veřejní. Tímto způsobem chráníme datová pole tím, že jim nedovolíme žádný přístup přímo mimo třídu.
Jsou přístupné pouze přes getry a settery. To ukazuje zapouzdření, které jsme popsali výše.
Často kladené otázky
Otázka č. 1) Co se rozumí objektově orientovaným programováním?
Odpovědět: Objektově orientované programování (OOP) je softwarové paradigma, které se točí kolem dat. V OOP je kladen důraz na data, a proto jsou problémy vyjádřeny ve smyslu objektů, které jsou entitami sestávajícími z dat nebo polí a metod, které na těchto datových polích fungují.
Tímto způsobem se používá několik charakteristických rysů OOP, jako je dědičnost, polymorfismus, abstrakce a zapouzdření, aby byla zajištěna bezpečnost dat, opakovaná použitelnost atd.
Otázka č. 2) Jaké jsou 4 základní principy OOP?
Odpovědět:Objektově orientované programování (OOP) má čtyři základní principy:
- Dědictví
- Polymorfismus
- Abstrakce
- Zapouzdření
Také se jim říká čtyři pilíře OOP.
Otázka č. 3) Proč se Java nazývá Object-Oriented?
Odpovědět: Java má objekt třídy root, ze kterého odvozujeme všechny ostatní funkce Java. Bez třídy a objektu tedy nemůžeme mít program Java. Proto se Java nazývá jazyk OOP.
Otázka č. 4) Je Java čistě objektově orientovaná?
Odpovědět: Ne, Java není čistý objektově orientovaný jazyk. Protože Java také poskytuje primitivní datové typy jako int, char, float, double, long atd., Není klasifikován jako čistý jazyk OOP.
Otázka č. 5) Jaký je rozdíl mezi C ++ a Javou?
Odpovědět: C ++ i Java jsou objektově orientované jazyky a podporují funkce OOP. Ale C ++ je kompilovaný jazyk. Java na druhé straně je kompilován stejně jako interpretovaný jazyk.
Interpret Java provádí bajtový kód za běhu a generuje výstup, díky kterému je nezávislý na platformě. C ++ je však závislý na platformě.
Více o konceptu OOPS
Třída
Třída je plán / prototyp objektu reálného světa a modeluje stav a chování tohoto objektu reálného světa.
Prohlášení o třídě
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
Softwarové objekty jsou jako skutečné objekty se stavem a chováním. Stav bude uložen jako pole a vystaví jeho chování jako metody.
Tady je pokoj jako obecný design. V této místnosti byste měli navrhnout obývací pokoj, kuchyň, ložnici.
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(); }
Zde by metoda „Keepthings ()“ měla dělat základní funkce požadované pro místnost a měla by mít další specifikaci podle požadavků třídy „obývací pokoj“ a „kuchyň“. Tyto dvě třídy by tedy měly zdědit metody ve třídě „room“.
Dědictví
Chování (metody) a stav jedné třídy zděděné po druhé třídě se nazývají dědičnost. Metody a stav se dědí z nadřazené třídy do podřízené třídy.
Tak,
Class CookingRoom extends Room{ }
Class LivingRoom extends Room{ }
Polymorfismus
V biologii se polymorfismus týká koření, které může mít mnoho různých forem.
Se stejným konceptem v objektově orientovaném programování může podřízená třída zdědit metody nadřazené třídy a také může k tomuto chování přidat jedinečné funkce. Polymorfismu lze dosáhnout přetížením nebo přepsáním metody.
Přetížení
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)); } }
Převažující
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ÝSTUP: Zde metoda podřízené třídy přepíše metodu nadřazené třídy.
Super klíčové slovo
Super klíčové slovo je referenční proměnná, která se používá k odkazu na objekt bezprostřední nadřazené třídy. Pomocí super klíčového slova můžete odkázat na metodu nadřazené třídy nebo proměnné nebo konstruktor.
Toto klíčové slovo
Toto klíčové slovo se používá k označení aktuálního objektu třídy. Pomocí tohoto klíčového slova můžete přistupovat k aktuální proměnné instance třídy nebo metodě aktuální třídy. To lze předat jako argument ve volání metody.
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()); } }
Stavitel
Konstruktory Java jsou jako metody, které budou volány, když je objekt vytvořen pro třídu. Konstruktor by měl mít stejný název jako třída.
Class Myclass{ Myclass(); Method1() { } }
Při vytváření objektu pro třídu Myclass myobj = new Myclass ();
Bude volána metoda konstruktoru. Konstruktor je ve výchozím nastavení automaticky vytvořen kompilátorem Java pro všechny třídy.
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); } }
Pravidla, která je třeba dodržovat pro konstruktor:
- Konstruktor by měl mít stejný název jako název třídy.
- Konstruktor by neměl mít návratový příkaz.
Je třeba poznamenat:
- V objektově orientovaném programování jsou objekty hlavní částí programování.
- Pojmy OOP jsou objekt, třída, dědičnost, polymorfismus, konstruktor.
- Super klíčové slovo použité k označení členů nadřazené třídy a tento klíčové slovo se používá k označení aktuálního objektu třídy.
- Konstruktory jsou jako metody, které budou volány, když je objekt vytvořen pro třídu.
Závěr
Tento výukový program se zabýval základy důležitých objektově orientovaných funkcí podporovaných Javou. Toto je pouze úvodní výukový program OOPS v Javě. Veškerým tématům se budeme podrobně věnovat v následujících výukách. Java podporuje čtyři pilíře OOP, tj. Polymorfismus, Dědičnost, Abstrakce a Zapouzdření.
Kromě těchto funkcí podporuje Java také další funkce a konstrukce OOP, jako jsou kontejnment, agregace, předávání zpráv atd., O kterých budeme hovořit v našich připravovaných tutoriálech.
Doporučené čtení
- Výukový program JAVA pro začátečníky: 100+ praktických výukových programů Java Video
- Co je to abstrakce v Javě - naučte se na příkladech
- Co je dědičnost v Javě - návod s příklady
- Co je polymorfismus v Javě - výukový program s příklady
- Zapouzdření v Javě: Kompletní výukový program s příklady
- Druhy dědičnosti v Javě - Single Vs Multiple Inheritance
- Koncepty OOPS v C #: Výukový program konceptu objektově orientovaného programování
- Objektově orientované programování v C ++