Modsim Obiekty

background image

1

JĘZYK SYMULACYJNY MODSIM

programowanie zorientowane

obiektowo

Metody symulacyjne

background image

2

Zagadnienia

• Definicja i własności obiektów.
• Deklaracja i definicja typu obiektu.
• Instancja obiektu a typ obiektowy.
• Pola i metody.
• Dziedziczenie.
• Prototypowanie obiektów.

background image

3

Obiekt

w języku MODSIM jest

dynamicznie powoływaną i usuwaną
strukturą danych ściśle powiązaną z
pewnymi operacjami zwanymi tu
metodami.

Definicja i własności obiektu.

background image

4

•hermetyzacja (ang. encapsulation)
•dziedziczenie
•polimorfizm
•przesyłanie komunikatów
•hierarchizacja typów

Własności:

Definicja i własności obiektu

cd.

background image

5

Deklaracja i definicja typu obiektowego

(klasy).

Syntaktyka bloku deklaracji typu

• Na definicję klasy składają się dwa bloki

programowe:

– blok deklaracji składowych klasy i

opcjonalnie listy dziedziczenia

– blok definicji metod klasy (wszystkich

zadeklarowanych wyżej)

background image

6

Deklaracja i definicja typu obiektowego

(klasy).

background image

7

Przykład deklaracji typu obiektowego.

TYPE

LiczbaZespolonaObj = OBJECT
czescRzeczyw : REAL;
czescUrojona : REAL;
ASK METHOD ustawWartosc(IN r, i : REAL);
ASK METHOD dodaj(IN a, b : complexNbrObj);
END OBJECT;

VAR x, y, z : LiczbaZespolonaObj;

Deklaracja i definicja typu obiektowego

(klasy).

background image

8

Deklaracja i definicja typu obiektowego

(klasy).

background image

9

Przykład bloku definicji

obiektu.

OBJECT LiczbaZespolonaObj;
ASK METHOD ustawWartosc(IN r, i : REAL);
BEGIN

czescRzeczyw := r;
czescUrojona := i;

END METHOD;
ASK METHOD dodaj(IN a, b : LiczbaZespolonaObj);
BEGIN

{kod dodawania}

END METHOD;
END OBJECT;

Deklaracja i definicja typu obiektowego

(klasy).

background image

10

FORWARD

– stanowi „zapowiedź” pełnej definicji typu lub

procedury w dalszej części modułu umożliwiając wcześniejsze

wykorzystanie zapowiadanego elementu przy definicji innego

PROCEDURE Proc1(IN a, b : REAL; OUT c : REAL); FORWARD;
CarObj = OBJECT; FORWARD;
...
PROCEDURE Proc1(IN a, b : REAL; OUT c : REAL);
BEGIN

... {kod procedury}

END PROCEDURE;

CarObj=OBJECT;

...

END OBJECT;

Kwalifikator FORWARD

Deklaracja i definicja typu obiektowego

(klasy).

background image

11

Różnice między metodami a

procedurami

• Metoda jest przywiązana do obiektu i może być

wywołana jedynie poprzez wysłanie komunikatu do
tego obiektu z żądaniem wykonania określonej
metody.

• W przeciwieństwie do procedur, może istnieć wiele

metod o tej samej nazwie, przy czym każda z nich
może mieć różny kod (działanie) oraz listę
parametrów.

• Niektóre metody (i tylko metody) mogą powodować

upływ czas symulacyjnego (TELL i WAITFOR).

Pola i metody.

background image

12

Pola i metody cd.

• Metody typu

ASK

• Metody typu

TELL

• Metody typu

WAITFOR

Rodzaje metod:

background image

13

ASK

- działanie natychmiastowe, podobne do

działania procedury lub funkcji - nie wytraca czasu
symulacji

Deklaracja:

ASK

METHOD

nazwaMetody

[(lista

parametrów

formalnych)]

ASK METHOD PodajStan(INOUT stan: REAL);

Wywołanie:

ASK obiekt [TO] nazwaMetody [(lista parametrów

aktualnych)]

ASK kasa TO PodajStan(aktualnyStan);

Pola i metody cd.

Rodzaje metod:

background image

14

Pola i metody cd.

Rodzaje metod:

TELL

- związana jest z upływem czasu symulacji.

W jednej chwili może być wykonywane kilka metod
TELL

Deklaracja:

TELL METHOD nazwaMetody [(lista parametrów

formalnych)];

TELL METHOD Obsluga(IN czas: REAL);

Wywołanie:

TELL obiekt [TO] nazwaMetody [(lista parametrów

aktualnych)]

[IN opóźnienie]

TELL kasa TO Obsluga(5.0) IN 10.0;

background image

15

Pola i metody cd.

Rodzaje metod:

WAITFOR

- związana jest z upływem czasu

symulacji. W jednej chwili może być wykonywane
kilka metod WAITFOR

Deklaracja:

WAITFOR METHOD nazwaMetody [(lista parametrów

formalnych)]; WAITFOR METHOD Obsluga(IN czas: REAL;OUT ile:
INTEGER);

Wywołanie (tylko wewnątrz instrukcji upływu

czasu

WAIT

FOR

):

WAIT FOR obiekt [TO] nazwaMetody [(listaParametrów

Aktualnych)];

END WAITFOR;
WAIT FOR kasa TO Obsluga(5.0, ileKlientow)
END WAIT;

background image

16

Powoływanie instancji obiektu:

ObjInit

Typ obiektu a instancja

obiektu.

Niektóre typy obiektów wymagają inicjalizacji.

TYPE

movingObj = OBJECT

x, y : REAL;

ASK METHOD ObjInit;

ASK METHOD Stop;

END OBJECT;

Jeśli obiekt posiada zdefiniowaną metodę ObjInit, wtedy
jest ona automatycznie wywoływana przez procedurę
NEW.

background image

17

Usuwanie instancji obiektu:

ObjTerminate

Typ obiektu a instancja obiektu

cd.

ObjTerminate jest wykorzystywana do wykonania
czynności przed usunięciem samego obiektu.

TYPE

movingObj = OBJECT

x, y : REAL;

ASK METHOD ObjInit;

ASK METHOD ObjTerminate;

ASK METHOD Stop;

END OBJECT;

Metoda jest wywoływana automatycznie przez procedurę
DISPOSE zanim obiekt zostanie usunięty z pamięci.

background image

18

Klonowanie obiektów:

ObjClone

Do tworzenia kopii instancji obiektu służy funkcja

CLONE. W wyniku jej wywołania następuje:

• Alokacja pamięci dla nowej instancji obiektu
• Przepisanie wartości pól obiektu klonowanego do

nowego obiektu

• Wywołanie metody ObjInit dla nowej instancji
• Wywołanie metody ObjClone dla nowej instancji

Typ obiektu a instancja obiektu

cd.

background image

19

Przykład klonowania

obiektu

Typ obiektu a instancja obiektu

cd.

VAR movingObj1, movingObj2 : MovingObj;

BEGIN

NEW(movingObj1);

...

movingObj2 := CLONE(movingObj1);

DISPOSE(movingObj1);

DISPOSE(movingObj2);

END MODULE;

background image

20

Zgodność typów obiektów

• Typ1 i Typ2 są tym samym typem obiektowym
• Typ pochodny w hierarchii dziedziczenia jest zgodny

dla typów będących jego przodkami

• Typ ANYOBJ jest typem zgodnym ze wszystkimi

typami obiektowymi i na odwrót

Typ obiektu a instancja obiektu

cd.

background image

21

Typ obiektowy: ANYOBJ

Typ obiektu a instancja obiektu

cd.

PROCEDURE switchObjects(INOUT firstObj : ANYOBJ;

INOUT secondObj : ANYOBJ);

VAR temp : ANYOBJ;

BEGIN

temp := firstObj;
firstObj := secondObj;
secondObj := temp;

END PROCEDURE;

background image

22

Stała referencyjna: SELF

Typ obiektu a instancja obiektu

cd.

Jest ona wykorzystywana:
przy odwoływaniu się obiektu do własnych pól i metod

(czytelność kodu)

TELL

SELF

TO move(IN x : REAL; IN y : REAL);

przy identyfikacji obiektu przez inny obiekt:

ASK METHOD airTrafficController;
BEGIN
distance := ASK movingObj TO

reportDistance(

SELF

);

END METHOD;

background image

23

Pola i metody cd.

Do pól obiektu można odwoływać się na trzy sposoby:

• speedValue :=

ASK

movingObject [

TO

] speed;

• speedValue := movingObject

.

speed;

• speedValue := speed;

Odwoływanie się do pól

obiektu

background image

24

Pola i metody cd.

Wywołanie metody następuje poprzez wysłanie do obiektu

komunikatu

np.:

ASK

someObject [

TO

]

doSomething[(lista parametrów)];

Wywoływanie metod

obiektu

background image

25

Istota dziedziczenia pojedynczego.

Dziedziczenie.

background image

26

Dziedziczenie cd.

Istota dziedziczenia wielokrotnego.

background image

27

Prototypowanie obiektów.

BObj = OBJECT;
...
END OBJECT;
ListaAObj = PROTO;
field : #BObj;
ASK METHOD doSomething(IN a : #BObj) : #BObj;
END PROTO;
DObj = OBJECT(BObj);
...
END OBJECT;
ListaCObj = OBJECT(ListaAObj[BObj : DObj]);
...
END OBJECT;
Uwaga: DObj musi być typem pochodnym od BObj.


Document Outline


Wyszukiwarka

Podobne podstrony:
modsim obiekty id 305582 Nieznany
Obiekty martyrologii polskiej
R 6 1 Obiektowy model zapytan
Wykład 6 2009 Użytkowanie obiektu
Modsim Skladnia
05 Odwzorowanie podstawowych obiektów rysunkowych
Automatyzacja w KiC (w 2) Obiekty reg
na niebie są widoczne różne obiekty astronomiczne
obiektywne metody oceny postawy ciała (win 1997 2003)
30 Obciążenia obiektów budowlanych, mostów drogowych i kolejowych
Zasady zasilania energią obiektu szpitalnego
Obiekty Graficzne w PowerPoint
Metodyka Obiektowa pojęcia podstawowe
Lokalizacja obiektu szpitalnego(6)

więcej podobnych podstron