Objektově orientované programování
Objektově orientovaný programovat (OOP) je počítač programovací vzor to zdůrazňuje následující aspekty:
- Objectss - zabalit data a funkčnost spolu do jednotek uvnitř běžícího počítačového programu; objekty jsou východisko pro modularity a struktura v objektově orientovaném počítačovém programu.
- Abstrakce - spojovat se rozmanité menší operace do jediné jednotky, která může být odkazovaly se na podle jména.
- Shrnutí - oddělovat implementaci od rozhraní.
- Polymorfizmus - vystupovat pod stejným jménem odvolat se na různé operace na objektech různý datové typy.
- Dědičnost - definovat objekty datové typy jako rozšíření a/nebo omezení jiných objektových datových typů.
OOP je často nazýván vzorem poněkud než styl nebo druh programování zdůraznit bod ten OOP může změnit směr software je vyvinut, tím, že změní směr že programátoři a inženýři softwaru myslí na software.
| Tabulka s obsahem |
| 1 základní 2 OOP s procedurálními jazyky 3 definice 4 prvotřídní-založené modely 5 objektu-založené modely 6 historie 7 další četby 8 vidět také: 9 vnějšího spojení |
Nejvíce základní stránka objektově orientovaného programování je že počítačový program je složen ze sbírky čeho být volaly objekty. Každý objekt je schopný dostaní zpráv a poslání zpráv k jiným objektům a uživatel zpřístupňuje objekt přes nezávislou osobu rozhraní od vnitřní struktury objektu (shrnutí). Tato technika je známá jako abstrakce s použitím objektů.
V OOP, programátoři mají se soustředit na zodpovědnost roztřiďování přes objekty, který je v srovnání s pohledem v tradičních vzorech takový jako naléhavé programování ve kterém programátoři jsou více znepokojení nad kroky procesů dat k produkčním jistým výsledkům. Podpůrcové OOP prohlašují, že použití OOP stylového programování může usnadnit programy psát, tvrdit, opětovné použití a ukázat se správný (přinejmenším v některých případech).
Fundamentally, tyto výhody přijdou ze skutečnosti, že OOP je modulární, bytí skládalo objektů (podobný náhradníkovi-programy) který být jednoduchý, self obsahoval a snadno identifikovatelný. Modularity dovolí části programu odpovídat skutečným aspektům problémové situace a proto modelovat skutečný svět. Opravdu, namítat orientované programování často začne od písemného prohlášení problémové situace. Pak procesem vkládat objekty nebo proměnné pro podstatná jména, metody na slovesa a atributy pro adjektiva pak dobrý start je dělán na kostře pro program, který modeluje a dohody s, ta situace.
Toto je velmi intuitivní způsob, jak pracovat. OOP je hlavní postup na předchozí complexities procedury založené metody. Ve velkých projektech, procedurální metody inklinovaly vyvinout velmi komplikované podmínkové smyčky a větve, obtížný rozumět a tvrdit.
Dědičnost: Jeden objekt má údaje a/nebo funkčnost může být založená na těch jiných objektů, od kterého bývalý objekt je řekl, aby zdědil. Toto dovolí commonalities mezi různé druhy objektů být vyjádřen jakmile a reused rozmanité časy. Dědičnost je také obyčejně držená zahrnovat subtyping, whereby jeden druh objektu je definován být více specializovaná verze dalšího typu (viz Liskov substituční princip), ačkoli non-subtyping dědičnost je také možná. Dědičnost je typicky vyjadřovaný tím, že popisuje třídy objektů uspořádaných v hierarchii dědičnosti odrážet obyčejné chování.
V procedurálních jazycích, OOP často se objeví jako forma kde datové typy jsou rozšířeny se chovat jako objekt v OOP, velmi podobný abstraktnímu datovému typu s rozšířením takový jako dědičnost. Každá metoda je vlastně podprogram který je syntactically svázané k třídě.
Definice OOP jsou sporné. V nejobecnějším smyslu, objektově orientované programování se odkazuje na praxi sledovacího softwaru primárně v podmínkách “věcí” (namítá) to obsluhuje, poněkud než akce to hraje. Jiné vzory takový jak funkční a procedurální programovací fokus primárně na akcích, s objekty být druhotná uvažování; v OOP, situace je hovořit.
Široce-použitá terminologie rozlišuje objektově orientované programování od namítat-umístěný. Bývalý je dodržován zahrnovat dědičnost (popsal dole), zatímco druhé laně ne. Vidět Spor o definici objektově orientovaného programování
Nejpopulárnější a rozvinutý model OOP je zatříděný založený model, jak protichůdný k objektu-založený model. V tomto modelu, namítá jsou entity, které se spojí obě stát (tj. data) a chování (tj., procedury, nebo methodss). Objekty jsou definovány třídy, který je definice nebo modrotisk, všech předmětů specického druhu. Objekt je považován za příklad třídy. Třída je podobná struktuře, s přidáním ukazatelů metody, členského řízení přístupu a implicitního členského datového typu který lokalizuje příklady třídy (tj.: skutečné předměty té třídy) v hierarchii třídy (podstatný pro provozní dědičnost rysy).
Namítat-umístěný programovací techniky zahrnují pojetí namítat (shrnutí a abstrakci) ale nezahrnují třídu-založené modely dědičnosti.
Představy o objektově orientovaném programování nejprve přijaly kořen Simula 67, jazyk určený pro simulace výroby, vytvořený Ole-Johan Dahl a Kristen Nygaardová Norského výpočetního střediska v Oslo. (údajně, příběh je že oni pracovali na simulacích lodi, a byl zmaten combinatorial explozí jak různé atributy od různých lodí mohly ovlivnit jednoho jiný. Nápad napadl skupinu různé druhy lodí do různých tříd objektů, každá třída objektů být zodpovědný pro definovat jeho vlastní data a chování.) oni byli později očištění v Smalltalk, který byl vyvinut v Simula u Oxeroxovat PARC, ale byl navrhnut být plně dynamický systém ve kterých objektech mohl být vytvořen a upravený “bezmyšlenkovitě” poněkud než mít systém založený na programech statické elektřiny.
Objektově orientované programování “vzlétlo” jako dominantní programovací metodologie během střední-osmdesátá léta, velmi očekávaný k vlivu C + +, rozšíření C programovací jazyk. Jeho vláda byla dále stmelena rostoucí popularitou grafických uživatelských rozhraní, pro kterého objektově orientované programování je údajně dobře-vhodný. Opravdu, vzestup GUIs měnil fokus uživatele od následných instrukcí textově orientovaných rozhraní k více dynamické manipulaci hmatatelných komponent. Příklad blízko příbuzný dynamický knihovna Gui a OOP jazyk mohou být nalezení v Kakaových kostrách na Mac OS X, zapsaný Cíl C, objektově orientované, dynamické komunikační rozšíření k C založený na Smalltalk.
Objektově orientované rysy byly přidány k mnoha existujícím jazykům během toho času, včetně Ady, Základní, Lisp, Pascal, a jiní. Sčítat tyto rysy k jazykům, které nebyly zpočátku určeny pro je často vedly k problémům s kompatibilitou a maintainability kódu. “čistý” objektově orientované jazyky, na druhé straně, postrádal rysy tolik programátoři přišli záviset na. To překlene tuto mezeru, mnoho pokusů bylo předstíral, že vytvoří nové jazyky založené na objektově orientovaných metodách ale dovolovat některé procedurální rysy v “bezpečných” cestách. Bertrand Meyer je Eiffel byl brzy a mírně úspěšný jazyk s těmi cíli.
V minulé dekádě Java se objevila v širokém používání částečně protože to podoba k C jazyk ale více důležitě protože jestliže jeho realizace používat virtuální stroj, který teoreticky provozuje kód nezměněný na mnoha různých platformách, latter který dělá tomu miláčka větších vývojových dílen s různorodými prostředími.
Více nedávno, množství jazyků se ukázali, že být primárně objektově orientovaný přesto slučitelný s procedurální metodologií, takový jako Python a Rubínový. Vedle Javy, pravděpodobně nejvíce komerčně důležité nedávné objektově orientované jazyky jsou VB.NET a C ostrý navržený pro Microsoft . síť platforma.
Spravedlivé jak procedurální programování vedlo k refinements techniky takový jako strukturované programování, moderní objektově orientované softwarové metody výpočtu obsahují refinements takový jako použití vzorů designu, design kontraktema jazyky modelování (takový jako UML). Další četba
- Booch, Grady. (1993) ISBN 0805353402 Objektově orientovaná analýza a design s aplikacemi (podporují vydání). Addison-Wesley.
- Gama, Erich, Richard Helm, Ralph Johnson, John Vlissides. (1995) ISBN 0201633612 Navrhnout vzory: Prvky znovu použitelného objektu určovaly software. Addison-Wesley.
- Meyer, Bertrand. (1997) ISBN 0136291554 Objektově orientovaná softwarová stavba (druhé vydání). Prentice Hall.
- Rumbaugh, James, Michael Blaha, William Premerlani, Frederick Eddy, William Lorensen. (1991) ISBN 0136298419 Objektově orientované modelování a design. Prentice Hall.
- Jacobsen, Ivar. (1994) ISBN 0201544350 Objektově orientované softwarové inženýrství: Případ použití- řízený přístup. Addison-Wesley.
- Abelson, Harold, Gerald Jay Sussman s Julieem Sussmanem. (1996) ISBN 0262011530 Struktura a výklad počítačových programů (podporují vydání). MIT tisk
Viz též:
- Komponenta softwaru
- Koordinovat jazyk popisu
- třída
- objekt
- namítat-umístěný programovací
- Jazyk objektově orientovaného programování
- Funkční programování
- Procedurální programování
- Strukturované programování
- Pošta-namítat programovací
- glosář objektově orientovaného programování
- Jak programovat v objektově orientovaných jazycích