Objektové programování v PHP. Vytvořte proměnné třídy. Třídy a objekty

16. dubna 2008 ve 12:15 hodin

PHP - OOP neboli procedurální přístup

  • PHP

PHP je jedním z nejpopulárnějších skriptovací jazyky programování. Téměř 60 % webových serverů používá PHP Každý měsíc jsou v PHP vyvinuty miliony webových stránek a webových aplikací.

PHP bylo původně vyvinuto jako snadná výměna jazyk perl a po několika letech se stal extrémně silným a populárním. jazyk PHP, sám o sobě je velmi podobný ANSI C.
Jedním z důvodů, proč se PHP stalo tak populární, je jeho krátká křivka učení.

Naučit se PHP není vůbec těžké, zvláště pokud jste s ním obeznámeni syntaxe Java nebo C.

Jak tedy psát PHP skripty jednoduše, každý může psát PHP kód, aniž by se řídil konvencemi a míchal prezentační vrstvu s obchodní logikou (to je jeden z hlavních důvodů existence velké množství neřízené projekty). Protože PHP nemusí mít nutně striktní konvence kódování, v průběhu let, jak se projekt zvětšuje a zvětšuje, se z něj stává obrovská, neřiditelná aplikace.

OOP neboli objektově orientované programování se dobře používá v programátorské praxi ke snadnějšímu vytváření řiditelných projektů.
Procedurální přístup zahrnuje psaní programový kód bez použití předmětů. Procedurální programování sestává z psaní kódu s nebo bez podprogramů.

OOP trénuje jakýkoli programovací jazyk, aby produkoval lepší programový kód, a používá se k lepší produkci vysoký výkon a psaní velké projekty, aniž by se museli bát, že budou zmateni v jejich řízení. OOP vám dává možnost vytvářet opakovaně použitelné objekty, abyste je vy nebo jiní vývojáři mohli používat ve svých projektech, aniž byste je museli znovu a znovu předělávat. OOP odstraňuje překážky a složitost při psaní a správě velkých aplikací.

PHP nám umožňuje napsat 2 aplikace různými způsoby, první je procedurální a druhý je objektově orientovaný. Pokud stále nechápete rozdíl mezi těmito dvěma přístupy, podívejme se na tyto části kódu - stejný příklad napsaný v různých přístupech.

Procesní:

$user_input = $_POST[‘pole‘];
$filtrovaný_obsah = filtr($vstup_uživatele); //filtrování vstupu uživatele
mysql_connect("dbhost", "dbuser", "dbpassword"); //databáze
mysql_select_db("název databáze");
$sql = "nějaký dotaz";
$vysledek = mysql_query($sql);
while ($data = mysql_fetch_assoc())
{
proces($data);
}
process_user_input($filtrovaný_obsah);

A zde je stejný kus kódu pomocí OOP:

$vstupni_filtr = novy filtr();
$input_filter->filter_user_input(); //filtrovat uživatelské vstupy
$db = new dal("mysql"); // vrstva přístupu k datům
$db->connect($dbconfig);//používáme mysql
$vysledek = $db->execute($sql);
ReportGenerator::makereport($result); //zpracovat data
$model = new Postmodel($filter->get_filtered_content());
$model->insert();

Pokud se pozorně podíváte na tyto 2 části kódu, všimnete si, že kód využívající OOP je čitelnější a snáze srozumitelný.

Kód s OOP je lépe organizovaný, protože je jasné, který objekt je čím zpracováván. Velké aplikace napsané pomocí procedurálního přístupu je po vydání několika verzí téměř nemožné vnímat. Samozřejmě můžete dodržovat přísná pravidla pro psaní programového kódu, ale jsou schválena miliony vývojářů, kteří vědí, že to vám nakonec nezajistí ovladatelnost a použitelnost projektu, pokud ve svém programu nepoužíváte OOP.
Skoro všechno velké aplikace napsaný pomocí objektově orientovaného
přístup.

Na základě výše uvedeného můžeme vyvodit výhody používání OOP:

OOP byl vytvořen, aby usnadnil život vývojářům. Pomocí OOP můžete rozdělit své velké problémy na malé problémy, které je mnohem snazší vyřešit.
Hlavní požadavek OOP: dělejte vše, co chcete dělat jako objekty. Objekty jsou samostatné malé části kódu, které mohou kombinovat data a vlastnosti dohromady. V aplikacích se všechny objekty vzájemně ovlivňují.

OOP lze považovat za lepší s různé strany, zvláště když je pro vás důležitý čas vývoje a následný vývoj aplikace.
Hlavní výhody používání OOP lze vyjádřit jako:

* Znovu použít: Objekt je logický objekt, který má sadu vlastností a metod a může interagovat s jinými objekty. Objekt může být zcela nezávislý nebo může záviset na jiných objektech. Objekt je obvykle vytvořen k řešení konkrétních problémů. Proto, když se jiní vývojáři setkají s podobnými problémy, mohou vaši třídu zapojit do svého projektu a používat ji, aniž by se museli obávat, že to naruší jejich vývojový proces. Vyhnete se tak DRY, což znamená Don’t Repeat Yourself. V procedurálním nebo modulárním programování, opětovné použití možné pouze souhrnně.

* Refaktoring: Když potřebujete v projektu použít refaktoring, OOP vám poskytuje maximální výhody, protože všechny objekty jsou malé prvky a obsahují své vlastnosti a metody jako součást sebe sama. Díky tomu je refaktoring relativně snadno použitelný.

* Rozšiřitelnost: Pokud potřebujete rozšířit funkčnost vašeho projektu, můžete dosáhnout nejlepší výsledky pomocí OOP. Jednou z hlavních funkcí OOP je rozšiřitelnost. K přidání funkcí můžete použít refaktorování objektů. Když na tom budete pracovat, můžete stále ušetřit
předchozí kompatibilita objektu - proto můžete v pohodě pracovat se starým kódem. Nebo můžete objekt rozšířit a vytvořit úplně nový, který bude obsahovat vše potřebné vlastnosti a metody nadřazeného objektu, ze kterého je nový odvozen, a poté k němu přidat nové funkce. Tomu se říká „dědičnost“ a je to velmi důležitou příležitost OOP.

* Podpora: objektově orientovaný kód se snadněji udržuje, protože
dodržuje velmi přísné konvence kódování a je napsán samovysvětlujícím způsobem.
Když například vývojář přidává, přepracovává nebo ladí kód, může jej snadno najít vnitřní struktura kód a čas od času kód udržovat. Navíc, když ve vašem prostředí pracuje tým OOP vývojářů, může to tak být nejlepší řešení protože po rozdělení na malé části můžete svůj kód distribuovat mezi členy týmu. Tyto malé části mohou být vyvinuty jako samostatné objekty, takže vývojáři mohou pracovat téměř nezávisle na sobě. V konečném důsledku nebude spojení všech částí do jedné aplikace obtížné.

* Účinnost: Myšlenka OOP byla ve skutečnosti vyvinuta za účelem zvýšení efektivity a usnadnění procesu vývoje. Bylo vyvinuto několik návrhových vzorů pro vytvoření efektivnějšího a kvalitnějšího kódu.
Navíc v OOP můžete svá rozhodnutí reflektovat podrobněji. pohodlná forma než v procesním přístupu. Protože svůj problém rozdělíte na několik malých problémů a pro každý z nich najdete řešení samostatně, velký problémřeší sám.

P.S moje první habratopická, pokud se vám bude líbit, knihu přeložím dále, pro mě je docela zajímavá a poučná

" Bude se to hodit jak úplně zeleným začátečníkům, tak těm, kteří už docela dobře zvládají psaní neobjektově orientovaného kódu a chtějí zjistit, proč je OOP ještě potřeba.

Co mě přimělo napsat několik článků o OOP v php, byl fakt, že jsem nenašel články na toto téma, které by mě uspokojily. Existují suché a nudné oficiální příručky nebo články, které prezentují v podstatě stejné příručky, jen s více podrobné příklady, na toto téma je na internetu také spousta zastaralých informací.

Proč potřebujeme OOP?

Popularita a jednoduchost PHP vede k tomu, že většina kódu napsaného v tomto jazyce je velmi pochybné kvality. S trochou volného času na učení tohoto jazyka a trochou vytrvalosti, i když nejste obeznámeni s programováním, můžete začít psát webové aplikace. Jak učení php můžete je učinit funkčnějšími. Pokud jste si však nenašli čas na design, brzy budete dělat doplňkové funkce do aplikace se její ladění a testování komplikuje a pro přidání nějakého malého detailu si musíte se vším pohrát větší objem kód, stává se stále více nesrozumitelným a matoucím, ostatní vývojáři, kteří se s vaším kódem seznámí, začnou nadávat a tvrdě ho kritizovat.

Ilustrace z knihy" Čistý kód“ – Robert Martin

Tak co se děje? Proč se projekt, který máte na mysli, může po rozšíření tak rychle proměnit v hromadu matoucího kódu s mrakem chyb? Faktem je, že začátečníci píší kód, který v jednom dělá pouze to, co se od něj vyžaduje konkrétní situaci a nepředpokládá žádné změny. Tento přístup není přijatelný, zejména pro webové aplikace, které budou muset nevyhnutelně růst a rozvíjet se, pokud se samozřejmě stanou populární. Dříve nebo později se vy a možná i další vývojáři budete muset vrátit k dříve napsanému kódu a provést v něm změny, a čím snazší to bude, tím rychleji se bude vaše aplikace vyvíjet a získávat na popularitě.

Objektově orientovaný přístup k programování samozřejmě není všelékem na všechny neduhy a sám o sobě váš kód nezlepší, ale jeho použití vám umožní prezentovat kód nikoli jako hromadu funkcí a proměnných, ale jako sbírka objektů, které se vzájemně ovlivňují, což je mnohem přehlednější. Data se nebudou nikde povalovat – budou uložena v objektech, které je ochrání před zneužitím. Funkce (v objektově orientovaném programování se jim říká metody) nebudou pouze provádět akce s proměnnými – budou popisovat chování objektů. V podstatě se jedná o modelování skutečných entit, jako je uživatel, příspěvek, komentář k němu a tak dále.

Kromě toho jsou v OOP běžné tzv. návrhové vzory – vzory pro řešení problému, který se v programování neustále objevuje. Použití těchto šablon vám za prvé umožní znát řešení určitého problému již před jeho vznikem a za druhé bude řešení problému jasné ostatním vývojářům, kteří znají šablonu, kterou jste použili.

Základní pojmy

OOP je programovací metodika (metoda, přístup), podle které softwarový produkt je reprezentován ve formě interagujících objektů. Nesouhlasím s tím, že OOP vždy implikuje použití tříd - například js je objektově orientovaný jazyk, ale nemá třídy. Při aplikaci na php OOP vždy znamená použití tříd.

Pod objekt Obvykle je chápán jako určitá pojmenovaná entita, která uchovává data a má své vlastní chování. Chování objektu a struktura dat, která ukládá, a také to, jak se k těmto datům přistupuje, popisuje třídu, do které objekt patří. Třída Toto je popis poněkud podobných souvisejících objektů, které obvykle ukládají stejnou sadu dat a mají stejné chování. Zavolá se objekt, který patří do určité třídy kopie. Příkladem je třída, která popisuje uživatele. Tato třída popisuje datovou strukturu, kterou bude každá instance této třídy ukládat. Nechte tyto údaje být vaším přihlašovacím jménem a heslem. Objekt třídy, který ukládá konkrétní hodnoty přihlášení a hesla, bude instancí této třídy.

Tři pilíře OOP


OOP je založen na tři principy které jsou často nazývány třemi pilíři OOP jsou:

  • zapouzdření
  • polymorfismus
  • dědictví

Zapouzdření je princip, podle kterého jsou data kombinována a uchovávána v objektech a jsou také chráněna před nesprávným použitím.

Může se vám zdát divné, že se programátor omezuje v právech číst nebo měnit data, ale často se stává, že je velmi obtížné plně vysledovat a pochopit, jak kód funguje, a proto se vyplatí vyhnout se situacím, které jsou zjevně chybný.
Jako příklad zneužít dat, lze se pokusit přiřadit záporný věk instanci osoby ve třídě. Přirozeně by takový pokus s dobře napsaným kódem neměl být úspěšný, jinak bude porušen princip zapouzdření.
V praxi princip zapouzdření spočívá v tom, že k datům se přistupuje pomocí metod, které mohou filtrovat nebo upravovat hodnoty dat, která se snažíme změnit.

Dědictví je proces, kdy jeden typ objektu (třídy) získává určité vlastnosti jiného typu objektu.

Často se stává, že popis jednoho typu objektu, tedy třídy, zcela spadá pod popis jiného typu objektu. Například třída, která popisuje administrátora, může také popisovat uživatele, kromě toho, že uživatel nemá přístupová práva. V tomto případě má smysl vytvořit třídu, která popisuje administrátory, potomek třída popisující uživatele. Zároveň ve třídě, která popisuje administrátory, nemusíme popisovat data a chování, které jsou již popsány ve třídě „uživatel“, stačí popsat data, která budou zodpovědná za udělení přístupových práv. V tomto případě bude třída "uživatel". předek třída „správce“, která může mít své vlastní dítě, a to dítě může mít vlastní atd. Řetězec dědictví může být libovolně dlouhý. Navíc jeden předek může mít více potomků, z nichž každý zcela získá vlastnosti svého předka a přidá k nim něco svého, jinak dědění postrádá smysl.

Polymorfismus je použití stejného názvu metody k řešení několika podobných problémů.

Je přirozené použít pro stejnou akci s různé typy objekty stejného řetězce dědičnosti mají stejný název metody. Implementace této metody se může v každé třídě lišit a voláním metody se to nedozvíme Jak něco dělá, ale my to budeme vědět Co dělá na základě svého jména. Vraťme se k našemu příkladu s uživatelem a správcem. Admin i uživatel se mohou přihlásit a přirozeně zvolit jeden název metody pro tuto akci, například přihlášení. Jeho konkrétní implementace v těchto třídách se může lišit, například při autorizaci zaznamenáváme administrátorská přístupová práva k relaci, nikoli však pro uživatele. Při psaní kódu, který zpracovává data přijatá z kódového formuláře, nám po vytvoření instance třídy nezáleží na tom, zda se přihlásí jednoduchý uživatel nebo administrátor - pro instanci kterékoli z těchto dvou tříd zavoláme metoda se stejným názvem.

To je dost nudné teorie. Příště budu psát o tom, jak popisovat třídy, vytvářet instance tříd, přístupová data (pole) a metody instancí.

PHP je jedním z nejpopulárnějších skriptovacích programovacích jazyků. Téměř 60 % webových serverů používá PHP Každý měsíc jsou v PHP vyvinuty miliony webových stránek a webových aplikací.

PHP bylo původně vyvinuto jako jednoduchá náhrada za Perl a během pár let se stalo extrémně výkonným a populárním. Samotný jazyk PHP je velmi podobný ANSI C.
Jedním z důvodů, proč se PHP stalo tak populární, je jeho krátká křivka učení.

Naučit se PHP není vůbec těžké, zvláště pokud jste obeznámeni se syntaxí Java nebo C.

Vzhledem k tomu, že psaní PHP skriptů je poměrně snadné, může každý psát PHP kód, aniž by se řídil jakýmikoli konvencemi a míchal prezentační vrstvu s obchodní logikou (to je jeden z hlavních důvodů, proč existuje tolik neřízených projektů). Protože PHP nemusí mít nutně striktní konvence kódování, v průběhu let, jak se projekt zvětšuje a zvětšuje, se z něj stává obrovská, neřiditelná aplikace.

OOP neboli objektově orientované programování se dobře používá v programátorské praxi ke snadnějšímu vytváření řiditelných projektů.
Procedurální přístup zahrnuje psaní programového kódu bez použití objektů. Procedurální programování zahrnuje psaní kódu s rutinami nebo bez nich.

OOP trénuje jakýkoli programovací jazyk, aby produkoval lepší programovací kód, a používá se k dosažení vyšší produktivity a psaní větších projektů, aniž by se museli bát, že se při jejich správě zmátneme. OOP vám dává možnost vytvářet opakovaně použitelné objekty, abyste je vy nebo jiní vývojáři mohli používat ve svých projektech, aniž byste je museli znovu a znovu předělávat. OOP odstraňuje bariéry a složitost při psaní a správě velkých aplikací.

PHP nám umožňuje psát aplikace 2 různými způsoby, první je procedurální a druhý je objektově orientovaný. Pokud stále nechápete rozdíl mezi těmito dvěma přístupy, podívejme se na tyto části kódu - stejný příklad napsaný v různých přístupech.

Procesní:

$user_input = $_POST[‘pole‘];
$filtrovaný_obsah = filtr($vstup_uživatele); //filtrování vstupu uživatele
mysql_connect("dbhost", "dbuser", "dbpassword"); //databáze
mysql_select_db("název databáze");
$sql = "nějaký dotaz";
$vysledek = mysql_query($sql);
while ($data = mysql_fetch_assoc())
{
proces($data);
}
process_user_input($filtrovaný_obsah);

A zde je stejný kus kódu pomocí OOP:

$vstupni_filtr = novy filtr();
$input_filter->filter_user_input(); //filtrovat uživatelské vstupy
$db = new dal("mysql"); // vrstva přístupu k datům
$db->connect($dbconfig);//používáme mysql
$vysledek = $db->execute($sql);
ReportGenerator::makereport($result); //zpracovat data
$model = new Postmodel($filter->get_filtered_content());
$model->insert();

Pokud se pozorně podíváte na tyto 2 části kódu, všimnete si, že kód využívající OOP je čitelnější a snáze srozumitelný.

Kód s OOP je lépe organizovaný, protože je jasné, který objekt je čím zpracováván. Velké aplikace napsané pomocí procedurálního přístupu je po vydání několika verzí téměř nemožné vnímat. Samozřejmě můžete dodržovat přísná pravidla pro psaní programového kódu, ale jsou schválena miliony vývojářů, kteří vědí, že to vám nakonec nezajistí ovladatelnost a použitelnost projektu, pokud ve svém programu nepoužíváte OOP.
Téměř všechny velké aplikace jsou napsány pomocí objektově orientovaných aplikací
přístup.

Na základě výše uvedeného můžeme vyvodit výhody používání OOP:

OOP byl vytvořen, aby usnadnil život vývojářům. Pomocí OOP můžete rozdělit své velké problémy na malé problémy, které je mnohem snazší vyřešit.
Hlavní požadavek OOP: dělejte vše, co chcete dělat jako objekty. Objekty jsou samostatné malé části kódu, které mohou kombinovat data a vlastnosti dohromady. V aplikacích se všechny objekty vzájemně ovlivňují.

OOP lze lépe posuzovat z různých úhlů pohledu, zvláště když je pro vás důležitý čas vývoje a následný vývoj aplikace.
Hlavní výhody používání OOP lze vyjádřit jako:

* Znovu použít: Objekt je logický objekt, který má sadu vlastností a metod a může interagovat s jinými objekty. Objekt může být zcela nezávislý nebo může záviset na jiných objektech. Objekt je obvykle vytvořen k řešení konkrétních problémů. Proto, když se jiní vývojáři setkají s podobnými problémy, mohou vaši třídu zapojit do svého projektu a používat ji, aniž by se museli obávat, že to naruší jejich vývojový proces. Vyhnete se tak DRY, což znamená Don’t Repeat Yourself. V procedurálním nebo modulárním programování je opětovné použití možné pouze souhrnně.

* Refaktoring: Když potřebujete v projektu použít refaktoring, OOP vám poskytuje maximální výhody, protože všechny objekty jsou malé prvky a obsahují své vlastnosti a metody jako součást sebe sama. Díky tomu je refaktoring relativně snadno použitelný.

* Rozšiřitelnost: Pokud potřebujete rozšířit funkčnost vašeho projektu, můžete dosáhnout lepších výsledků pomocí OOP. Jednou z hlavních funkcí OOP je rozšiřitelnost. K přidání funkcí můžete použít refaktorování objektů. Když na tom budete pracovat, můžete stále ušetřit
předchozí kompatibilita objektu - proto můžete v pohodě pracovat se starým kódem. Nebo můžete objekt rozbalit a vytvořit zcela nový, který bude obsahovat všechny potřebné vlastnosti a metody nadřazeného objektu, od kterého je nový odvozen, a následně do něj přidat nové funkce. Toto se nazývá „dědičnost“ a je velmi důležitou vlastností OOP.

* Podpora: objektově orientovaný kód se snadněji udržuje, protože
dodržuje velmi přísné konvence kódování a je napsán samovysvětlujícím způsobem.
Když například vývojář přidává, přepracovává nebo ladí kód, může snadno najít vnitřní strukturu kódu a čas od času kód udržovat. Navíc, když ve vašem prostředí pracuje tým vývojářů, OOP může být lepším řešením, protože můžete svůj kód distribuovat mezi členy týmu poté, co jej rozložíte na malé části. Tyto malé části mohou být vyvinuty jako samostatné objekty, takže vývojáři mohou pracovat téměř nezávisle na sobě. V konečném důsledku nebude spojení všech částí do jedné aplikace obtížné.

* Účinnost: Myšlenka OOP byla ve skutečnosti vyvinuta za účelem zvýšení efektivity a usnadnění procesu vývoje. Bylo vyvinuto několik návrhových vzorů pro vytvoření efektivnějšího a kvalitnějšího kódu.
Navíc v OOP můžete svá rozhodnutí reflektovat pohodlnějším způsobem než procesním přístupem. Protože svůj problém rozdělíte na několik malých problémů a pro každý z nich najdete řešení zvlášť, velký problém se vyřeší sám.

P.S moje první habratopická, pokud se vám bude líbit, knihu přeložím dále, pro mě je docela zajímavá a poučná

11. března 2010 v 11:37 hodin

OOP s příklady (část 1)

  • Vzdělávací proces v IT

Vůlí osudu si musím přečíst speciální kurz o designových vzorech na univerzitě. Speciální kurz je povinný, takže studenti, kteří ke mně přicházejí, jsou velmi odlišní. Samozřejmě jsou mezi nimi i cviční programátoři. Ale bohužel většina lidí má potíže i s pochopením základních pojmů OOP.

K tomu jsem se snažil vysvětlit na víceméně živých příkladech základní pojmy OOP (třída, objekt, rozhraní, abstrakce, zapouzdření, dědičnost a polymorfismus).

První část níže je o třídách, objektech a rozhraních.
ilustruje zapouzdření, polymorfismus a dědičnost

Základní pojmy OOP

Třída
Představte si, že navrhujete auto. Víte, že auto musí obsahovat motor, odpružení, dva světlomety, 4 kola atd. Také víte, že vaše auto musí umět zrychlovat a zpomalovat, zatáčet a couvat. A hlavně přesně víte, jak na sebe motor a kola působí, podle jakých zákonů se pohybuje vačkový a klikový hřídel a také jak jsou navrženy diferenciály. Jste si jisti svými znalostmi a pusťte se do navrhování.

Popisujete všechny části, které tvoří vaše auto, a také to, jak tyto části na sebe vzájemně působí. Kromě toho popisujete, co musí uživatel udělat, aby stroj zabrzdil nebo zapnul dálkové světlo světlomety Výsledkem vaší práce bude skica. Právě jste vyvinuli to, čemu se říká OOP Třída.

Třída je způsob popisu entity, který definuje stav a chování, které na tomto stavu závisí, a také pravidla pro interakci s touto entitou (smlouvou).

Třídu lze z programátorského hlediska považovat za soubor dat (pole, atributy, členy třídy) a funkcí pro práci s nimi (metody).

Z hlediska struktury programu je třída komplexní typ data.

V našem případě třída zobrazí entitu – auto. Atributy třídy budou motor, odpružení, karoserie, čtyři kola atd. Metody třídy budou „otevřít dveře“, „sešlápnout plynový pedál“ a také „načerpat část benzínu z plynové nádrže do motoru“. První dvě metody jsou dostupné pro provádění jinými třídami (zejména třídou „Driver“). Ten popisuje interakce v rámci třídy a není přístupný uživateli.

Dále, navzdory skutečnosti, že slovo „uživatel“ je spojeno s Solitaire a „ Microsoft Word“, budeme označovat programátory, kteří používají vaši třídu, jako uživatele, včetně vás. Osobu, která je autorem třídy, budeme říkat vývojář.

Objekt
Odvedli jste skvělou práci a stroje vyvinuté podle vašich výkresů sjíždějí z montážní linky. Tady jsou, stojící v úhledných řadách na továrním dvoře. Každý z nich přesně opakuje vaše kresby. Všechny systémy spolupracují přesně tak, jak jste navrhli. Ale každé auto je jedinečné. Všechny mají čísla karoserie a motoru, ale tato čísla jsou všechna odlišná, auta se liší barvou a některá mají dokonce odlitky místo vyražených kol. Tato auta jsou v podstatě předměty vaší třídy.

objekt (instance) je individuální zástupce třídy, který má specifický stav a chování, které je zcela určováno třídou.

Mluvení jednoduchým jazykem, objekt má specifické hodnoty atributů a metody, které pracují s těmito hodnotami na základě pravidel definovaných ve třídě. V v tomto příkladu, pokud je třída nějaké abstraktní auto ze „světa myšlenek“, pak objekt je konkrétní auto stojící pod vašimi okny.

Rozhraní
Když přistoupíme ke kávovaru nebo usedneme za volant, začneme s nimi komunikovat. Obvykle k interakci dochází pomocí určité sady prvků: slot pro příjem mincí, tlačítko pro výběr nápoje a přihrádka na výdej sklenice v kávovaru; volant, pedály, řadicí páka v autě. Vždy existuje nějaká omezená sada ovládacích prvků, se kterými můžeme komunikovat.

Rozhraní je sada metod tříd, které jsou dostupné pro použití jinými třídami.

Je zřejmé, že rozhraním třídy bude sada všech jejích veřejných metod spolu se sadou veřejných atributů. Rozhraní v podstatě specifikuje třídu a jasně definuje vše možné akce nad tím.
Dobrým příkladem rozhraní by bylo přístrojová deska auto, které umožňuje volat metody jako zvýšení rychlosti, brzdění, zatáčení, řazení, rozsvícení světlometů atp. Tedy všechny úkony, které může jiná třída (v našem případě řidič) provádět při interakci s vozem.

Při popisu rozhraní třídy je velmi důležité najít rovnováhu mezi flexibilitou a jednoduchostí. Třída s jednoduchým rozhraním se bude snadno používat, ale vyskytnou se problémy, které nedokáže vyřešit. Současně, pokud je rozhraní flexibilní, pak se s největší pravděpodobností bude skládat z dostatečného množství komplexní metody S velký počet parametry, které vám umožní hodně, ale jeho používání bude spojeno s velkými obtížemi a rizikem, že uděláte chybu tím, že něco namícháte.

Příklad jednoduché rozhraní může posloužit vůz s automatickou převodovkou. Jeho obsluhu si velmi rychle osvojí každá blondýnka, která absolvovala dvoutýdenní řidičský kurz. Na druhou stranu, abyste zvládli řízení moderního osobního letadla, potřebujete několik měsíců nebo dokonce let tvrdého tréninku. Nechtěl bych být na palubě Boeingu pilotovaného někým, kdo má dva týdny letových zkušeností. Na druhou stranu nikdy nedostanete auto, které by vzlétlo a odletělo z Moskvy do Washingtonu.




Nahoru