objektově orientovaný programovací systém (OOPs) je programovací paradigma založené na konceptu „objektů“, které obsahují data a metody. Primárním účelem objektově orientovaného programování je zvýšit flexibilitu a udržovatelnost programů. Objektově orientované programování sdružuje data a jejich chování (metody) V jednom místě(objekt) usnadňuje pochopení toho, jak program funguje. Budeme pokrývat každý rys OOPs v detailu, takže nebudete čelit žádné obtížně pochopitelné OOPs koncepty.,
OOPs Concepts – Obsah
- Co je Objekt
- Co je třídy
- Konstruktor v jazyce Java
- Objektově Orientované Programování Funkce
- Abstrakce
- Zapouzdření
- Dědičnost
- Polymorfismus
- Abstraktní Třídy a Metody
- Rozhraní v jazyce Java
Co je Objekt
Předmět: je svazek údajů a jeho chování(často označované jako metody).
objekty mají dvě vlastnosti: mají stavy a chování.,
Příklady států a chování
Příklad 1:
Objekt: Dům
Stav: Adresa, Barva, Plocha
Chování: Otevřené dveře, zavřete dveře.
Takže pokud bych měl napsat třídu na základě státech a chování Domu. Mohu to udělat takto: stavy mohou být reprezentovány jako proměnné instance a chování jako metody třídy. Uvidíme, jak vytvořit třídy v další části této příručky.
class House { String address; String color; double are; void openDoor() { //Write code here } void closeDoor() { //Write code here } ... ...}
poznámka: jak jsme viděli výše, stavy a chování objektu mohou být reprezentovány proměnnými a metodami ve třídě.,
vlastnosti objektů:
Pokud je pro vás těžké pochopit abstrakci a zapouzdření, nebojte se, protože jsem tato témata podrobně popsal příklady v další části této příručky.
- Abstrakce
- Zapouzdření
- předávání Zpráv
Abstrakce: Abstrakce je proces, kde můžete ukázat pouze „relevantní“ data a „schovat“ nepotřebné detaily objektu od uživatele.
zapouzdření: zapouzdření jednoduše znamená vazebný stav objektu(pole) a chování(metody) společně. Pokud vytváříte třídu, děláte zapouzdření.,
předávání zpráv
jeden objekt sám o sobě nemusí být velmi užitečný. Aplikace obsahuje mnoho objektů. Jeden objekt interaguje s jiným objektem vyvoláním metod na tomto objektu. To je také označováno jako způsob vyvolání. Viz schéma níže.
Co je Třída v Jejda Pojmy
třída může být považována za plán, pomocí kterého můžete vytvořit tolik objektů, jak se vám líbí. Například zde máme třídu Website
, která má dva datové členy (také známé jako pole, proměnné instance a stavy objektů)., Jedná se pouze o plán, nepředstavuje žádné webové stránky, ale pomocí toho můžeme vytvářet webové objekty (nebo instance), které reprezentují webové stránky. Vytvořili jsme dva objekty, při vytváření objektů jsme poskytli objekty samostatné vlastnosti pomocí konstruktoru.
výstup:
beginnersbook 5google 18
co je Konstruktor
Konstruktor vypadá jako metoda, ale ve skutečnosti to není metoda. Je to jméno je stejné jako název třídy a nevrací žádnou hodnotu., Musíte vidět toto prohlášení v téměř všech programů, které jsem sdílel výše:
MyClass obj = new MyClass();
Pokud se podíváte na pravé straně tohoto prohlášení, vyzýváme výchozí konstruktor třídy myClass
vytvořit nový objekt (nebo instance).
můžeme mít také parametry v konstruktoru, takové konstruktory jsou známé jako parametrizované konstruktory.,
Příklad konstruktoru
Výstup:
Chaitanya 30Steve 56
Objektově Orientované Programování vlastnosti
Tyto čtyři vlastnosti jsou hlavní OOPs Concepts, že musíte se naučit, pochopit Objektově Orientované Programování v Javě
Abstrakce
Abstrakce je proces, kde můžete ukázat pouze „relevantní“ data a „skrýt“ zbytečné detaily objektu od uživatele., Například, když se přihlásíte na váš bankovní účet on-line, můžete zadat váš user_id a heslo a stiskněte tlačítko přihlásit, co se stane, když stiskněte tlačítko přihlásit, jak vstupní data odeslána na server, jak to dostane ověřit všechno je získávána od vás. Přečtěte si více o tom zde: abstrakce v Javě.
zapouzdření
zapouzdření jednoduše znamená vázací stav objektu(pole) a chování(metody) společně. Pokud vytváříte třídu, děláte zapouzdření.,
příklad zapouzdření v Javě
Jak
1) učinit proměnné instance soukromé, takže k nim nelze přistupovat přímo mimo třídu. Hodnoty těchto proměnných můžete nastavit pouze pomocí metod třídy.
2) mají metody getter a setter ve třídě nastavit a získat hodnoty polí.
Výstup:
No Of Employees: 5613
třída EncapsulationExample
, který je pomocí Objektu třídy EmployeeCount
nebudou moci získat NoOfEmployees přímo., K nastavení a získání hodnoty musí použít metody setter a getter stejné třídy.
Takže, co je výhoda zapouzdření v jazyce java programming
No, v určitém okamžiku, pokud chcete změnit detaily implementace třídy EmployeeCount, můžete svobodně dělat tak, aniž by to ovlivnilo tříd, které ho používají.
dědičnost
proces, kterým jedna třída získává vlastnosti a funkce jiné třídy, se nazývá dědičnost., Dědičnost poskytuje představu o znovupoužitelnost kódu a každý sub třída definuje pouze ty funkce, které jsou jedinečné pro něj, ostatní funkce, které mohou být zděděny z nadřazené třídy.
- dědičnost je proces definování nové třídy založené na existující třídě rozšířením jejích společných datových členů a metod.
- dědičnost nám umožňuje opětovné použití kódu, zlepšuje opětovnou použitelnost ve vaší aplikaci java.
- nadřazená třída se nazývá základní třída nebo super třída. Dětská třída, která rozšiřuje základní třídu, se nazývá odvozená třída nebo dílčí třída nebo dětská třída.,
Poznámka: největší výhodou dědičnosti je, že kód v základní třídě nemusí být přepsán v dětské třídě.
proměnné a metody základní třídy lze použít také v dětské třídě.
syntaxe: dědičnost v Javě
zdědit třídu, kterou používáme rozšiřuje Klíčové slovo. Zde třída A je třída dětí a třída B je třída rodičů.
class A extends B{}
Dědičnost Příklad:
V tomto příkladu, máme nadřazené třídy Teacher
a dítě třídy MathTeacher
., Ve třídě MathTeacher
nemusíme psát stejný kód, který je již přítomen v současné třídě. Máme tady vysoké školy název, označení a dělá() metoda, která je společná pro všechny učitele, tak MathTeacher třídy není třeba psát tento kód, společné datové členy a metody zděděné od Teacher
třídy.,
Výstup:
BeginnersbookTeacherMathsTeaching
Poznámka: Multi-level inheritance je povoleno v jazyce Java, ale není vícenásobná dědičnost
Typy Dědičnosti:
jednoduchá Dědičnost: týká se dítě a rodič, třída, vztah, kde třída rozšiřuje jinou třídu.
víceúrovňové dědictví: označuje vztah dítěte a rodičovské třídy, kde třída rozšiřuje třídu dítěte. Například třída a rozšiřuje třídu B A třída B rozšiřuje třídu C.,
hierarchická dědičnost: označuje vztah dítěte a rodičovské třídy, kde více než jedna třída rozšiřuje stejnou třídu. Například třída B rozšiřuje třídu a A Třída C rozšiřuje třídu a.
Vícenásobné dědictví: odkazuje na koncept jedné třídy rozšiřující více než jednu třídu, což znamená, že třída dítěte má dvě mateřské třídy. Java nepodporuje více dědičnosti, přečtěte si více o tom zde.
většina nových jazyků OO, jako je Small Talk, Java, C#, nepodporuje více dědičnosti. Vícenásobné dědictví je podporováno v C++.,
Polymorfismus
Polymorfismus je objektově orientovaný programovací funkce, která nám umožňuje provádět jednotlivé akce v různých způsobech. Například, řekněme, že máme třídu Animal
, který má metodu animalSound()
, tady nemůžeme dát provádění této metody jako nevíme, které Zvíře třídy by rozšířit Animal
třídy., Takže, jsme se, aby tato metoda abstraktní, jako je tento:
public abstract class Animal{ ... public abstract void animalSound();}
Nyní předpokládejme, že máme dva Zvířecí třídy Dog
Lion
, který rozšiřuje Animal
třídy. Můžeme tam poskytnout detaily implementace.
public class Lion extends Animal{... @Override public void animalSound(){ System.out.println("Roar"); }}
a
public class Dog extends Animal{... @Override public void animalSound(){ System.out.println("Woof"); }}
Jak můžete vidět, že i když jsme měli společné akce pro všechny podtřídy animalSound()
, ale existují různé způsoby, jak dělat stejné akce., Jedná se o dokonalý příklad polymorfismu (funkce, která nám umožňuje provádět jednu akci různými způsoby).
Typy Polymorfismu
1) Statický Polymorfismus
2) Dynamický Polymorfismus
Statický Polymorfismus:
Polymorfismus, který je vyřešen během kompilátor době je známý jako statický polymorfismus. Přetížení metody lze považovat za příklad statického polymorfismu.přetížení metody
: To nám umožňuje mít více než jednu metodu se stejným názvem ve třídě, která se liší podpisem.,
Výstup:
aa 10
Když řeknu, že podpis metody nemluvím o návratový typ metody, například pokud se dvě metody mají stejné jméno, stejné parametry a mají různé návratový typ, pak toto není platná metoda přetížení příklad. To bude hodit chybu kompilace.
dynamický polymorfismus
to je také známé jako dynamická metoda odeslání. Dynamický polymorfismus je proces, při kterém je volání k přepsané metodě vyřešeno spíše za běhu, proto se nazývá runtime polymorfismus.,
Příklad:
Výstup:
Woof
Od obou tříd, dítě třídy a nadřazené třídy mají stejné metody animalSound
. Která z metod bude volána, je určena za běhu JVM.
Několik prvořadých příkladů:
-& MÁ-Vztahy
Auto-Vozidla a MÁ-Licence pak kód by měl vypadat takhle:
public class Vehicle{ }public class Car extends Vehicle{ private License myCarLicense;}
Abstraktní Třídy a metody v Jejda Pojmy
Abstraktní metoda:
1) metoda, která je deklarována, ale není definována. Pouze metoda podpis žádné tělo.,
2) Deklarována pomocí abstraktní klíčové slovo
3) Příklad :
abstract public void playInstrument();
5), které se Používají k dát nějaké nutkání na třídu, která dědí třída má abstraktní metody. Třída, která zdědí, musí poskytnout implementaci všech abstraktních metod mateřské třídy else deklarovat podtřídu jako abstraktní.
6) Tyto nemohou být abstraktní
- Konstruktory
- Statické metody
- Soukromé metody
- Metody, které jsou prohlášeny za „konečný“
Abstraktní Třída
abstraktní třída popisuje metody, ale ne nutně implementuje všechny metody.,
abstract class A{ abstract void myMethod(); void anotherMethod(){ //Does something }}
Poznámka 1: mohou existovat některé scénáře, kdy je obtížné implementovat všechny metody v základní třídě. V takových scénářích lze definovat základní třídu jako abstraktní třídu, která znamená, že tato základní třída je zvláštní druh třídy, která není sama o sobě úplná.
třída odvozená z abstraktní základní třídy musí implementovat metody, které nejsou implementovány (znamená, že jsou abstraktní) v abstraktní třídě.
Poznámka 2: abstraktní třídu nelze instancovat, což znamená, že nemůžete vytvořit objekt abstraktní třídy., Pro použití této třídy, musíte vytvořit další třídu, která rozšiřuje tato abstraktní třída poskytuje implementaci abstraktní metody, pak můžete použít předmět, který dítě třídy volat non-abstraktní rodičovskou třídu metod, jakož i implementované metody(ty, které byly abstrakt v mateřské ale realizován v dětské třídě).
Poznámka 3: pokud dítě neimplementuje všechny abstraktní metody rodičovské třídy (abstraktní třída), musí být dětská třída prohlášena za abstraktní.,
Příklad Abstraktní třídy a Metody
Tady máme abstraktní třídu Zvíře, která má abstraktní metodu animalSound(), protože zvířecí zvuk se liší od jednoho zvířete na druhé, není tam žádný smysl dávat provádění této metody jako každé dítě třídy musí přepsat tuto metodu dát svůj vlastní implementační detaily. Proto jsme to udělali abstraktní.
nyní každé zvíře musí mít zvuk, tím, že tuto metodu abstraktní jsme udělali to povinné pro dětskou třídu, aby podrobnosti o implementaci této metody. Tímto způsobem zajistíme, aby každé zvíře mělo zvuk.,
Výstup:
Woof
Rozhraní v Javě
rozhraní je plán třídy, které mohou být deklarovány pomocí rozhraní klíčové slovo. Rozhraní mohou obsahovat pouze konstanty a abstraktní metody (metody pouze s podpisy bez těla).Stejně jako abstraktní třídy nelze rozhraní instancovat, mohou být implementována pouze třídami nebo rozšířena o jiná rozhraní. Rozhraní je běžný způsob, jak dosáhnout úplné abstrakce v Javě.,
Poznámka:
- Java nepodporuje Vícenásobnou Dědičnost, avšak třída může implementovat více než jedno rozhraní
- Rozhraní je podobné abstraktní třída, ale obsahuje pouze abstraktní metody.,
- Rozhraní jsou vytvořeny pomocí rozhraní klíčové místo klíčového slova class
- Můžeme použít
implements
klíčové slovo při implementaci rozhraní(podobné rozšíření třídy se rozšiřuje klíčové slovo)
Rozhraní: Syntaxe
class ClassName extends Superclass implements Interface1, Interface2, ....
Příklad Rozhraní:
Poznámka:
- Všechny metody v rozhraní jsou implicitně public a abstraktní. Použití klíčového slova
abstract
před každou metodou je volitelná. - rozhraní může obsahovat konečné proměnné.,
- třída může rozšířit pouze jednu další třídu, ale může implementovat libovolný počet rozhraní.
- Pokud třída implementuje rozhraní, musí dát definici abstraktní metody rozhraní, jinak to může být deklarována jako abstraktní třídy
- rozhraní odkaz může ukazovat na objekty jeho prováděcích tříd.
Generalizace a Specializace:
cílem realizovat koncepci dědičnosti v Jejda, jeden musí nejprve identifikovat podobnosti mezi různými třídami tak, aby se přijít s základní třídy.,
tento proces identifikace podobností mezi různými třídami se nazývá zobecnění. Zobecnění je proces extrakce sdílených charakteristik ze dvou nebo více tříd a jejich kombinace do zobecněné superklasy. Sdílené charakteristiky mohou být atributy nebo metody.
Na rozdíl od zobecnění znamená specializace vytváření nových podtříd ze stávající třídy. Pokud se ukáže, že určité atributy nebo metody se vztahují pouze na některé objekty třídy, lze vytvořit podtřídu.,
přístupové specifikátory
v příkladech, které jsem sdílel výše, jste museli vidět veřejné, soukromé Klíčové slovo. Nazývají se specifikátory přístupu, protože rozhodují o rozsahu člena dat, metody nebo třídy.
v Javě jsou čtyři typy přístupových specifikátorů:
public: přístupné všem. K této proměnné nebo funkci člena mohou přistupovat i jiné objekty.
private: není přístupný jinými objekty. K soukromým členům lze přistupovat pouze metodami ve stejné třídě. Objekt přístupný pouze ve třídě, ve které jsou deklarovány.,
protected: rozsah chráněné proměnné je v rámci třídy, která ji deklaruje, a ve třídě, která dědí ze třídy (rozsah je třída A podtřída).
výchozí: rozsah je úroveň balíčku. Nemusíme výslovně zmínit výchozí, jako když nezmíníme žádný přístupový specifikátor, který je považován za výchozí.,
Co se můžeme naučit v další návody na OOPs Concepts
i když máme pokryté téměř všechny OOPs concepts, ale co jsme se naučili v této příručce je stručně řečeno, tato témata jsou široké a není tam tak velký prostor, aby se dozvědět o těchto tématech v detailu s pomocí příkladů. To je důvod, proč jsem se podrobně zabýval každým tématem spolu s příklady a diagramy v dalších tutoriálech.
Jak si můžete přečíst další návody v sekvenčním způsobem? Existuje několik způsobů, jak to udělat – 1) Tutorial odkazy jsou k dispozici v levém postranním panelu, jít i když je v daném pořadí.,
2) Přejděte na hlavní stránku tutoriálu java, která má postupně všechny odkazy na Návody.
Pokud zjistíte nějaké potíže s porozuměním těchto konceptů OOPs, pak napište komentář níže a já se k vám vrátím co nejdříve.