
Brian Curtis
0
3113
776
Pokud jste provedli nějaké programování pro začátečníky nebo jste se dokonce začali zabývat různými jazyky, pravděpodobně jste narazili na frázi “objektově orientované programování” (nebo “OOP”).
Existuje celá řada technických vysvětlení, co to je, ale dnes se podíváme na definování objektově orientovaného programování jednoduchým způsobem.
Než začneme: Procedurální jazyky
Abyste pochopili, co je objektově orientovaný programovací jazyk, musíte porozumět tomu, co nahradil. Počáteční programovací jazyky byly procedurální tzv. Protože programátor by definoval velmi specifický soubor procedur, které by počítač prováděl.
V nejranějších dnech byly postupy psány na děrných kartách. Tyto kroky provedly data, provedly sled akcí s těmito daty a poté vydaly nová data.
Procedurální jazyky nějakou dobu fungovaly dobře (a některé se stále používají). Ale pokud chcete naprogramovat něco, co přesahuje základní posloupnost kroků, řízení procedurálních jazyků může být obtížné. Tam přichází objektově orientované programování.
Předmět objektově orientovaného programování
Co je tedy objektově orientované programování?
První objektově orientovaný jazyk (obecně se shodl na tom, že je Simula) představil myšlenku objekty. Objekty jsou soubory informací, které jsou považovány za samostatnou entitu.
Za chvíli se ponoříme hlouběji do toho, co to vlastně znamená, ale nejprve musíme mluvit třídy. Třídy jsou něco jako pre-objekty. Obsahují seznam atributů, které se po definování stanou objektem.
Vezměme si příklad programování šachové hry. Mohli bychom mít třídu s názvem Piece. V rámci Piece máme seznam atributů:
- Barva
- Výška
- Tvar
- Pohyb povolen
Objekt jednoduše definuje jednu konkrétní instanci věci patřící do této třídy.
Mohli bychom tedy mít objekt s názvem WhiteQueen. Tento objekt by měl definice pro všechny čtyři atributy (bílý, vysoký, válcový s vroubkováním, libovolný počet mezer v libovolném směru). Může mít také metody nebo funkce.
Co to dělá mnohem lépe než procedurální přístup?
Stručně řečeno, objektově orientované programovací jazyky (jako Java) usnadňují uspořádání dat a kódu způsobem, který je univerzálnější pro větší projekty.
Abychom o tom diskutovali podrobněji, hovoříme o čtyřech základech objektově orientovaného programování.
Objektově orientované programování: Abstrakce
To, že chcete něco použít, neznamená, že potřebujete vědět, jak to funguje. Například kávovar je složitý. Ale nemusíte vědět, jak to funguje. Musíte to jen vědět, když zasáhnete “Na,” dostanete espresso.
Totéž platí pro objekty v objektově orientovaném programování. V našem šachovém příkladu můžeme mít metodu move (). Tato metoda by mohla vyžadovat spoustu dat a dalších metod. Může potřebovat počáteční a konečnou polohovou proměnnou. Mohl by použít jinou metodu pro určení, zda je zachycen kus.
Ale to nemusíte vědět. Vše, co potřebujete vědět, je, že když řeknete kusu, aby se pohyboval, pohyboval se. To je abstrakce.
Objektově orientované programování: Zapouzdření
Zapouzdření je jedním ze způsobů, jak objektově orientované programování vytváří abstrakci. Každý objekt je kolekce dat, která jsou považována za jednu entitu. A uvnitř těchto objektů jsou data - proměnné i metody.
Proměnné v objektu jsou obecně udržovány jako soukromé, což znamená, že k nim nemohou přistupovat jiné objekty a metody. Objekty mohou být ovlivněny pouze pomocí jejich metod.
Biskupský objekt může obsahovat několik informací. Například by mohla mít volanou proměnnou “pozice.” Tato proměnná je nezbytná pro použití metody move (). A samozřejmě má barvu.
Tím, že změníte poziční proměnnou na soukromou a metodu move (), programátor chrání proměnnou move před ovlivněním něčím jiným. A pokud je barva soukromá proměnná, neexistuje způsob, jak ji změnit jiný objekt, pokud neexistuje metoda, která tuto změnu umožňuje. (Což pravděpodobně nemáte, protože barva díla by měla zůstat konstantní.)
Tyto proměnné a metody jsou uchovávány v objektu Bishop. Protože jsou zapouzdřeny, mohl by programátor změnit strukturu nebo obsah objektu bez obav z veřejného rozhraní.
Objektově orientované programování: Dědičnost
Objektové programovací jazyky mají kromě tříd také podtřídy. Ty obsahují všechny atributy z nadřazené třídy, ale mohou také obsahovat další atributy.
V naší šachové hře musí figurky pěšáků použít metodu, která je dokáže převést na jiné kousky, pokud se dostanou na konec hrací plochy. Říkáme tomu metoda transformPiece ().
Ne každý kus potřebuje metodu transformPiece (). Takže bychom to nechtěli dát do třídy Piece. Místo toho můžeme vytvořit podtřídu s názvem Pěšec. Protože se jedná o podtřídu, zdědí všechny atributy od Piece. Příklad podtřídy Pěšec tedy zahrnuje povolenou barvu, výšku, tvar a pohyb.
Zahrnuje však také metodu transformPiece (). Teď se už nemusíme obávat náhodného použití této funkce ve věži. Zde je technické vysvětlení:
Vytváření podtříd také šetří spoustu času. Místo vytváření nových tříd pro všechno mohou programátoři vytvořit základní třídu a poté ji podle potřeby rozšířit na nové podtřídy. (Je však třeba poznamenat, že přílišné spoléhání se na dědičnost je špatné. 10 Základní principy programování, které musí každý programátor dodržovat 10 základních zásad programování, které musí každý programátor dodržovat Vždy napsat kód, který může udržovat kdokoli, kdo může skončit prací na vašem softwaru. konec, zde je několik zásad programování, které vám pomohou vyčistit váš akt.)
Objektově orientované programování: Polymorfismus
Polymorfismus je výsledkem dědičnosti. Plné porozumění polymorfismu vyžaduje určité znalosti programování, takže se tady budeme jen držet základů. Stručně řečeno, polymorfismus umožňuje programátorům používat metody stejného jména, ale s různé objekty.
Například naše třída Piece může mít metodu move (), která pohybuje kusem o jeden prostor v libovolném směru. To funguje pro královou část, ale ne pro nic jiného. Pro vyřešení tohoto problému můžeme definovat novou metodu move () v podtřídě Rook, která definuje pohyb jako neomezený počet mezer vpřed, vzad, vlevo nebo vpravo..
Nyní, když programátor vyvolá metodu move () a použije kus jako argument, program bude přesně vědět, jak by se kus měl pohybovat. To šetří spoustu času při pokusu zjistit, kterou z mnoha různých metod byste měli použít.
Objektově orientované programování v kostce
Pokud se vaše hlava po posledních čtyřech definicích trochu točí, nebojte se. Zde jsou hlavní věci, které si musíte pamatovat:
- Objektově orientované programování shromažďuje informace do jednotlivých entit nazývaných objekty.
- Každý objekt je jedna instance třídy.
- Abstrakce skrývá vnitřní fungování objektu, když není nutné je vidět.
- Zapouzdření ukládá související proměnné a metody do objektů a chrání je.
- Dědičnost umožňuje podtřídám používat atributy z nadřazených tříd.
- Polymorfismus umožňuje objektům a metodám řešit různé situace pomocí jediného rozhraní.
Pokud si tyto body pamatujete, budete mít dobrý přehled o tom, co je objektově orientované programování. Jak jsem zmínil, čtyři základy objektově orientovaného programování mohou být trochu obtížné. Ale jakmile začnete programovat, budou jasnější.
Pamatujte, že v tomto článku jsme diskutovali pouze obecnosti. Různé objektově orientované jazyky budou mít své vlastní vtípky a způsoby, jak věci dosáhnout. Jakmile si vyberete ten správný jazyk, hledáte nejlepší programovací jazyky? Začněte zde! Hledáte nejlepší programovací jazyky? Začněte zde! Ať už jste v programovacích jazycích úplně nováčkem nebo se chystáte skočit do nového druhu programování, jednou z nejdůležitějších otázek je: „Který programovací jazyk je pro mě vhodný?“ , začnete se učit, jak zavádí zásady OOP do praxe.