Pobierz prezentację
Pobieranie prezentacji. Proszę czekać
OpublikowałBeata Dominika Kowalewska Został zmieniony 8 lat temu
1
Statyczna kontrola typów w SBQL Rafał Hryniów Polsko-Japońska Wyższa Szkoła Technik Komputerowych, Warszawa rhryniow@pjwstk.edu.pl
2
Plan prezentacji Typy w modelu M0 Rozszerzenia dla modelu M1 Dalsze prace
3
Typy w modelu M0 Typy proste Typy złożone Zgodność typów Liczności i atrybuty
4
Typy proste Pięć typów prostych int float boolean string date Możliwość tworzenia nowych typów prostych typedef pesel = int;
5
Typy złożone Słowo kluczowe struct Dowolna złożoność struktury typedef Employee = struct { name : string; age : int; }; employee : Employee; employee2 : struct { name : string; age :int};
6
Zgodność W przypadku typów prostych – nazwowa typedef PESEL = int; pesel : PESEL; liczba : int; pesel = liczba – błąd typu W przypadku typów złożonych – strukturalne employee2 = employee – typologicznie poprawne
7
Atrybuty Liczność (UML) [0..1] [1..1] – domyślna [0..*] [1..*] Mutowalność Czy zbiór jest uporządkowany (ordered) Czy jest to zbiór (unique)
8
Przykładowa struktura Employee : struct { name : string; surname : string; salary : float; worksIn : ref to Department[0..1]; jobDescription : struct { jobName : string; jobDesc : string; }
9
I mapowanie dla niej Obiekty złożone: <i Employee, Employee, [name 1, surname 1, salary 1, worksIn [0..1], jobDescription 1 ]> powiązanie : Obiekty atomowe :
10
Problemy dla modelu M1 Dziedziczenie – co widzi programista Podtypowanie dla metod Polimorfizm Operacje imperatywne
11
Model M1 –co z dziedziczeniem Co powinien widzieć programista w przypadku gdy odwołujemy się do nadklasy obiektu Tylko atrybuty z nadklasy – typologicznie poprawne Wszystkie atrybuty -co z kontrolą typologiczną Dodać operator rzutowania i możliwość sprawdzenia typu przez programistę
12
Problem z podtypami Kowariancja Animal { eat(Food) } Cow extends Animal { eat(Grass) } Animal a = new Cow(); Food f = new Hamburger(); a.eat(f); //Food poisoning Kontrawariancja Animal { eat(Grass) } Cow extends Animal { eat(Food) } Bardzo mało elastyczne Inwariancja Animal { eat(Food) } Cow extends Animal { eats(Food) } Food { } Grass extends Food { }
13
Polimorfizm Uniwersalny Parametryczny Inkluzyjny Ad hoc Koercje Przeciążenia
14
Dalsze prace Obsługa operatorów imperatywnych Procedury i metody Typy w modelach M2 i M3
Podobne prezentacje
© 2024 SlidePlayer.pl Inc.
All rights reserved.