120 likes | 228 Views
Tervminták megvalósítása B formális nyelven. Papp Olga Vadász Péter. UML B tervminták B-re való átírásuk példa: Singleton más tervminták megvalósításának hasonlóságai. Tartalom. UML ( Unified Modelling Language ).
E N D
Tervminták megvalósításaB formális nyelven Papp Olga Vadász Péter
UML B tervminták B-re való átírásuk példa: Singleton más tervminták megvalósításának hasonlóságai Tartalom
UML (Unified Modelling Language) • specifikáció, objektumorientált modellezés, megoldás leírása, dokumentáció • grafikus nyelv – diagramok • diagram: elemek + relációk • nézetrendszerek: - statikus (strukturális) - dinamikus - implementációs - használati - környezeti
: emberek név=Nagy János sz.ig.szám=AB123456 B : programozási nyelv Ősosztály Származtatott osztály ►név OsztályA OsztályB Alkalmazott private fizetés : int {fizetés>50000} public fizetést emel(mennyivel) A B C D UML statikus nézet szerepA 2..* szerepB 4
B formális nyelv • objektum alapú nyelv • absztrakt gépek - osztályokhoz hasonló - alap gépek - finomító gépek - implementáció gépek • jBTools }
MACHINE SINGLETON CONCRETE_VARIABLES exist, singletonData INVARIANT singletonData:NAT & exist:BOOL INITIALISATION singletonData::NAT || exist:=FALSE OPERATIONS singletonOp(adat)= PRE adat:NAT THEN SELECT exist=TRUE THEN singletonData:=adat WHEN exist=FALSE THEN exist:=TRUE || singletonData:=adat END END; data<--getSingletonDat = PRE exist=TRUE THEN data:=singletonData END; bbool<--isExist= bbool:=exist END B nyelvi szintaxis
Originator state SetMemento(Memento m) CretaMemento() Memento state GetState() SetState() Caretaker Singleton static Singleon* uniqueInstance singletonData static Singleton* Instance() SingletonOperation() GetSingletonData() Singleton és Memento tervminták
imports sees Singintface Ír Singleton Kiír BT_IO Singleton tervminta B-ben
MACHINE IR SEES SINGINTFACE OPERATIONS beir = skip END MACHINE SINGLETON CONCRETE_VARIABLES exist, singletonData INVARIANT singletonData:NAT & exist:BOOL INITIALISATION singletonData::NAT || exist:=FALSE OPERATIONS singletonOp(adat)= PRE adat:NAT THEN SELECT exist=TRUE THEN singletonData:=adat WHEN exist=FALSE THEN exist:=TRUE || singletonData:=adat END END; data<--getSingletonDat = PRE exist=TRUE THEN data:=singletonData END; bbool<--isExist= bbool:=exist END IMPLEMENTATION SINGLETON_imp REFINES SINGLETON INITIALISATION exist:=FALSE; singletonData::NAT OPERATIONS singletonOp(adat)= BEGIN IF exist=TRUE THEN singletonData:=adat ELSE BEGIN exist:=TRUE; singletonData:=adat END END END; data<--getSingletonDat = BEGIN data:=singletonData END; bbool<--isExist = BEGIN bbool:=exist END END MACHINE SINGINTFACE SEES SINGLETON OPERATIONS singletonOperation(adat)= PRE adat:NAT THEN skip END; data<--getSingletonData = data:=0 END MACHINE KIIR INCLUDES IR OPERATIONS main = skip END IMPLEMENTATION IR_imp REFINES IR SEES SINGINTFACE OPERATIONS beir= BEGIN singletonOperation(1234) END END IMPLEMENTATION SINGINTFACE_imp REFINES SINGINTFACE IMPORTS SINGLETON OPERATIONS singletonOperation(adat)= BEGIN singletonOp(adat) END; data<--getSingletonData = BEGIN data<--getSingletonDat END END IMPLEMENTATION KIIR_imp REFINES KIIR IMPORTS BT_IO, IR, SINGINTFACE OPERATIONS main = VAR bb, ii IN beir; bb<--isExist; IF bb=TRUE THEN BEGIN writeString("RENDBEN"); ii<--getSingletonData; writeInteger(ii) END ELSE writeString ("HIBA") END END END Singleton megvalósítása B-ben
imports sees Singintface Ír State Usememento includes/ imports Originator Singleton Kiír BT_IO Memento BT_IO Singleton és Memento B-ben
MACHINE SINGINTFACE SEES SINGLETON OPERATIONS singletonOperation(adat)= PRE adat:NAT THEN skip END; data<--getSingletonData = data:=0 END MACHINE ORIGINATOR INCLUDES os.STATE(NAT), mm.MEMENTO OPERATIONS create_memento = skip; set_memento = PRE mm.exist = TRUE THEN skip END; set_azon(az) = PRE az : NAT THEN skip END; set_adat(ad) = PRE ad : NAT THEN skip END; az<--get_azon = az<--os.get_azon; ad<--get_adat = ad:=1 END IMPLEMENTATION ORIGINATOR_imp REFINES ORIGINATOR IMPORTS os.STATE(NAT), mm.MEMENTO OPERATIONS … END IMPLEMENTATION SINGINTFACE_imp REFINES SINGINTFACE IMPORTS SINGLETON OPERATIONS singletonOperation(adat)= BEGIN singletonOp(adat) END; data<--getSingletonData = BEGIN data<--getSingletonDat END END
Tervminták megvalósítása B-ben • specifikáció • implementációk felírása • futtatható (Java) kód generálása • a tervmintát felhasználó programok specifikációja és implementációja • tesztelhetőség • ellenőrzések és helyességbizonyítás • hasonló struktúrájú felírás