Simula 67Simula 67 je nejspíš první funkční objektově orientovaný programovací jazyk, odvozený podobně jako Pascal z Algolu (kterému se syntaxí velmi podobá). Jazyk byl navržen v roce 1967 speciálně pro simulování systémů hromadné obsluhy. Proto byl vybaven možností kvaziparalelního výpočtu a kalendářem událostí. Jazyk se prakticky neuplatnil mimo akademické prostředí, ale měl významný vliv na další vývoj objektového programování. Mnoho rysů Simuly (speciálně celé pojetí tříd a dědičnosti) bylo totiž později převzato jazykem C++ nebo Java. Jazyk Java byl sice odvozen z jazyka C++, nicméně v některých rysech se blíží Simule.[1] Simula, stejně jako Java a některé další jazyky, obsahuje garbage collector, což je mechanismus pro automatické uvolňování nepoužívaných objektů z paměti. Charakteristika jazykaZákladní datové typy
Řídící strukturyPříkaz: je ukončen středníkem. Přiřazení hodnot: Přiřazení referencí: Blok: Podmínka: Cyklus while: Cyklus for: velmi obecný ProceduryPřístup k parametrům proceduryHodnotouImplicitní pro jednoduché typy, možné pro texty a pole. ! toto je komentář
procedure X(Param); value Param; text Param; ! text předávaný hodnotou
Procedura pracuje s kopií proměnné. ReferencíImplicitní pro nejednoduché typy. procedure X(Param); text Param; ! text předávaný referencí
Procedura pracuje přímo s proměnnou, předává se jí reference na proměnnou. Pokud je proměnná v proceduře změněna, projeví se změna i v původní proměnné. JménemPovolené pro všechny typy. procedure X(Param); name Param; text Param; ! text předávaný jménem
Podobné jako předávání referencí, ale proměnná se při každém použití znovu vyhodnotí. Příklad proceduryProcedure FormatujText(T, N, Ok); Text T; Integer N; ! Vypíše text T zarovnaný zprava, N je maximální počet sloupců
Name Ok; Boolean Ok; ! Pomocí Ok se vrátí, jestli se text vešel do N sloupců
Begin
Integer I;
Ok := N >= T.Length; ! ověření, zda se text vejde do N sloupců
For i:=1 step 1 until N-T.Length do ! výpis mezer zleva
Begin
OutText(" ");
End
OutText(T); ! výpis textu
End of FormatujText;
FunkcePro deklaraci funkce se před Příklad funkceInteger Procedure Umocni(Zaklad, Exponent); Integer Zaklad; Integer Exponent; ! Umocni Zaklad na Exponent
Begin
Umocni:=Zaklad**Exponent; ! Operátor ** slouží k umocnění
End
TřídyTřída v Simule je tvořená čtyřmi částmi: parametry, atributy, metody a životní pravidla. DeklaraceClass Obdelnik (Width, Height); Real Width, Height; ! třída se dvěma parametry
Begin
Real Obsah, Obvod; ! atrubuty;
Procedure Aktualizuj; ! metody
Begin
Obsah := Width * Height;
Obvod := 2*(Width + Height)
End of Aktualizuj;
Boolean Procedure JsemCtverec;
Begin
JsemCtverec := Width=Height;
End of JsemCtverec;
! životní pravidla
Aktualizuj;
OutText("Vytvořen obdélník: ");
OutFix(Width,2,6);
OutFix(Height,2,6);
OutImage
End of Obdelnik;
Vytvoření objektuRef(Obdelnik) obd;
obd:-New Rectangle(20, 30);
Objektu se přiřadí paměť zkopírují se hodnoty parametrů a začnou se provádět životní pravidla. Vytvoření podtřídyObdelnik Class GrafickyObdelnik(Viditelny); Boolean Viditelny;
Begin
If Viditelny Then
OutText("Tento obdelnik je viditelný");
Else
OutText("Tento obdelnik není viditelný");
OutImage;
End of GrafickyObdelnik;
Při vytvoření objektu se nejdříve provedou životní pravidla nadtřídy a potom podtřídy. Lze to změnit příkazem Vytvoření objektu podtřídyRef(GrafickyObdelnik) obdelnik;
obdelnik:-New GrafickyObdelnik(40, 10, True);
Inner
Pokud do nadtřídy umístíme příkaz Class A
Begin
!kod A1
Inner;
!kod A2
End of A;
A Class B
Begin
!kod B1
Inner;
!kod B2
End of B;
B Class C
Begin
!kod C1
Inner;
!kod C2
End of C;
Provede se nejdříve kód A1, potom se narazí na Ukázka kóduProgram Hello world vypadá takto: Begin OutText("Hello World!"); OutImage; End; OdkazyReference
Externí odkazy
|
Portal di Ensiklopedia Dunia