Co je to ten objekt ?

Pan Booch to vyjádřil takto : objekt má stav, chování, a identitu; struktura a chování podobných objektů je definována v jejich obecné třídě; termíny instance a objekt jsou zaměnitelné.

No, pod tím si toho moc nepředstavíme - takže obrázek :

představa objektu, 12 kB

 

Objekt je uzavřený, lokální data jsou obalena metodami, ale ani metody nejsou zvenčí přístupné - jediný způsob, jak použít objekt či jak s ním komunikovat, je poslat objektu zprávu : pak objekt spustí svou metodu, která může použít atributy objektu a další metody objektu, může také poslat zprávu jinému objektu.

Podrobnější popis :

  • protokol zpráv : seznam zpráv, které je možno objektu poslat; je to to jediné, co je vidět z okolí objektu - všechno ostatní je uzavřeno uvnitř objektu a není to z okolí objektu přístupné
  • metody (chování) : po té, co objekt obdrží zprávu, spustí odpovídající metodu, tj. posloupnost kódu vykonávající nějakou činnost; metoda používá atributy objektu a další metody objektu, také může poslat zprávu jinému objektu; metody jsou zvnějšku neviditelné a nepřístupné
  • atributy (lokální data) : je to vnitřní paměť objektu; stav objektu je určen právě hodnotami těchto atributů; atributy jsou zvnějšku neviditelné a nepřístupné
  • odkaz na jiný objekt : pokud objekt zná odkaz na jiný objekt, může mu poslat zprávu; zpráva je poslána příkazem umístěným v kódu metody

Podrobněji o posílání zpráv :

posílání zpráv, 6 kB

 

  • vysílač, sender, klient : objekt, který posílá jinému objektu zprávu
  • příjemce, receiver, server : objekt, kterému je poslána zpráva; příjemce má přiřazeny jednotlivé zprávy k jednotlivým metodám - po přijetí zprávy tedy příjemce spustí odpovídající metodu
  • zpráva si sebou nese parametry (ty jsou předány odpovídající metodě), po skončení metody příjemce vrátí návratovou hodnotu zpět vysílači
Několik příkladů k objektovému myšlení :
  • Objekt je black-box : mějme černou skříňku s několika tlačítky a světýlky. Může to být TV, automobil, PC, šachový počítač, mikrovlnka, .... . Co potřebujeme znát pro použití tohoto objektu je : jaké chování má tento objekt ? Jaké tlačítko mám použít, aby se objekt zachoval tak, jak právě potřebuji (mikrovlnka : abych nastavil dobu a stupeň ohřevu, abych namísto ohřevu spustil grilování, .... TV : abych zapnul TV, abych pod konkrétní číslo kanálu uložil konkrétní číslo programu, abych zesílil zvuk ....). Je mi naprosto lhostejno co je uvnitř, tj. pokud požádám TV o zesvětlení obrazu, TV toto provede (TV vnitřně použije jednu či více metod, popř. interně zavolá o služby další objekty, které jsou zabaleny uvnitř v TV); anebo : nevím nic o tom, na základě jakých zapamatovaných údajů si mikrovlnka v závislosti na váze a druhu zmražené potraviny vypočítá dobu a výkon k rozmražení - a přesto jsem schopen mikrovlnku používat.
  • Objekt jako HW : komponenty dnešních PC mají výše uvedené objektové vlastnosti, jednotlivé komponenty (např. zvuková karta, pevný disk, CD-ROM, ...) se chovají jako objekty :
    • po správném zapojení a zprovoznění tyto objekty spolu spolupracují : jeden objekt požaduje po jiném objektu (resp. počítačová komponenta žádá jinou komponentu o) provedení služeb, které se zavázal tento objekt poskytovat - spoluprací všech objektů je zajištěna správná činnost systému (tj. komponenty PC spolupracují - a hleďmě, ono je to fungující PC ! :-)
    • komponenty mají vnitřní paměť - kromě dat z problémové domény (nař. u TV karty TV signál, video a audio signál) obsahují nepochybně další vnitřní paměť, o které ostatním komponentám není nic známo a nejsou pro ostatní komponenty nijak dosažitelné
    • komponenty mají vnitřní metody, kterými řídí svou činnost - tyto metody jsou však ostatním komponentám také nedosažitelné (některé z nich lze však spustit tím, že je objektu zaslána odpovídající zpráva)
    • komponenty lze skládat a tvořit tak složené objekty : složením základní desky, CD-ROM, pevného disku, zvukové karty, paměťového bloku, atd. atd. dostaneme PC, které má opět charakter objektu - propojíme-li správně několik PC tak, že dostaneme počítačovou síť, pak si mohou jednotlivé PC posílat zprávy (a přitom jednotlivá PC neví nic o tom, z jakých komponent se skládají ostatní PC - jedno PC může jimnému PC pouze poslat zprávu);
      v opačném směru to platí také - základní deska obsahuje několik integrovaným obvodů, které se chovají také jako objekty : posílají si zprávy, a pokud je objekt požádán o službu, tak ji provede - vzájemnou kooperací těchto objektů (IO) plní základní deska očekávané funkčnosti a mohou ji používat další objekty (další komponenty PC)