Download as docx, pdf, or txt
Download as docx, pdf, or txt
You are on page 1of 16

Άσκηση 1

α) Δόθηκε ο παρακάτω κώδικας:

TELL Individual ArtCollector in S_Class

end ArtCollector

TELL Individual ArtObject in S_Class

end ArtObject

TELL Attribute collects

from: ArtCollector

to: ArtObject

in S_Class

end collects

TELL Individual PaintingCollector in S_Class isA ArtCollector

end PaintingCollector

TELL Individual Painting in S_Class isA ArtObject

end Painting

TELL Attribute collects

from: PaintingCollector

to: Painting

in S_Class isA collects from ArtCollector

end collects

Το διάγραμμα που τον απεικονίζει είναι το παρακάτω:


Όπως βλέπουμε η PaintingCollector κληρονομεί τα χαρακτηριστικά της ArtCollector και η
Painting του ArtObject ενώ το collects συνδέει την κλάση ArtObject με την ArtCollector .
Ομοίως και το collects του PaintingCollector συνδέει την Painting με το PaintingCollector.

b)
Η δήλωση του γνωρίσματος collects from PaintingCollector σαν γνωρίσμα collects from
ArtCollector στην προηγούμενη δήλωση δεν εξασφαλίζει ότι κάθε συλλέκτης συλλέγει μόνο
Painting, γιατί δεν περιορίζει τον τύπο των αντικειμένων που μπορεί να συλλέξει ο κάθε
συλλέκτης.
Για να εξασφαλιστεί ότι κάθε PaintingCollector συλλέγει μόνο Painting, μπορούμε να
εισαγάγουμε ένα νέο γνώρισμα collectsPaintings, το οποίο θα περιγράφει αυτήν τη
συγκεκριμένη σχέση. Επίσης, θα πρέπει να αντικαταστήσουμε το υπάρχον γνώρισμα collects
με δύο διαφορετικά γνωρίσματα collectsArtObjects και collectsPaintings, προκειμένου να
διαχωρίσουμε τις δύο διαφορετικές συλλογές.
Μια τροποποίηση είναι η παρακάτω:
TELL Attribute collectsArtObjects
from: ArtCollector
to: ArtObject
in S_Class
end collectsArtObjects

TELL Attribute collectsPaintings


from: PaintingCollector
to: Painting
in S_Class
end collectsPaintings

Άσκηση 2

α) Με βάση το σχήμα που μας δόθηκε έχουμε τον παρακάτω κώδικα σε Telos:

Tell Individual Αντικείμενο in S_Class


end Αντικείμενο

Tell Individual Αυτοκίνητο in S_Class isA Αντικείμενο


end Αυτοκίνητο

Tell Individual Κινητήρας in S_Class isA Αντικείμενο


end Κινητήρας

Tell Individual ΚωδικόςΑριθμός in S_Class


end ΚωδικόςΑριθμός

Tell Individual Πρόσωπο in S_Class


end Πρόσωπο
Tell Individual Αξία in S_Class
end Αξία

Tell Individual Πώληση in S_Class


end Πώληση

Tell Individual Ημερομηνία in S_Class


end Ημερομηνία

TELL Attribute έχειΜέρος


from: Αυτοκίνητο
to: Κινητήρας
in S_Class
end έχειΜέρος

TELL Attribute αριθμόςΚινητήρα


from: Κινητήρας
to: ΚωδικόςΑριθμός
in S_Class
end αριθμόςΚινητήρα

TELL Attribute αριθμόςΠλαισίου


from: Αυτοκίνητο
to: ΚωδικόςΑριθμός
in S_Class
end αριθμόςΠλαισίου

TELL Attribute αριθμόςΤαυτότητας


from: Πρόσωπο
to: ΚωδικόςΑριθμός
in S_Class
end αριθμόςΤαυτότητας

TELL Attribute κατέχει


from: Πρόσωπο
to: Αυτόκίνητο
in S_Class
with attribute
ημερομηνίαΑγοράς: Ημερομηνία
end
end κατέχει

TELL Attribute πωλητής


from: Πώληση
to: Πρόσωπο
in S_Class
end πωλητής

TELL Attribute τιμή


from: Πώληση
to: Αξία
in S_Class
end τιμή
TELL Attribute πωλούμενοΕίδος
from: Πώληση
to: Αυτοκίνητο
in S_Class
end τιμή

β)
Αλλάζοντας την οντότητα Πώληση σε χαρακτηριστικό και το χαρακτηριστικό «κατέχει» σε
οντότητα έχουμε το παρακάτω σε Telos

Tell Individual Αντικείμενο in S_Class


end Αντικείμενο

Tell Individual Αυτοκίνητο in S_Class isA Αντικείμενο


end Αυτοκίνητο

Tell Individual Κινητήρας in S_Class isA Αντικείμενο


end Κινητήρας

Tell Individual ΚωδικόςΑριθμός in S_Class


end ΚωδικόςΑριθμός

Tell Individual Πρόσωπο in S_Class


end Πρόσωπο

Tell Individual Αξία in S_Class


end Αξία
Tell Individual Κατέχει in S_Class
end Πώληση

Tell Individual Ημερομηνία in S_Class


end Ημερομηνία

TELL Attribute έχειΜέρος


from: Αυτοκίνητο
to: Κινητήρας
in S_Class
end έχειΜέρος

TELL Attribute αριθμόςΚινητήρα


from: Κινητήρας
to: ΚωδικόςΑριθμός
in S_Class
end αριθμόςΚινητήρα

TELL Attribute αριθμόςΠλαισίου


from: Αυτοκίνητο
to: ΚωδικόςΑριθμός
in S_Class
end αριθμόςΠλαισίου

TELL Attribute αριθμόςΤαυτότητας


from: Πρόσωπο
to: ΚωδικόςΑριθμός
in S_Class
end αριθμόςΤαυτότητας
TELL Attribute πώληση
from: Πρόσωπο
to: Αυτόκίνητο
in S_Class
with attribute
τιμή: Αξία
end
end πώληση

TELL Attribute δόθηκε


from: Κατέχει
to: Αυτόκίνητο
in S_Class
with attribute
ημερομηνίαΑγοράς: Ημερομηνία
end
end δόθηκε

TELL Attribute ανήκε


from: Κατέχει
to: Πρόσωπο
in S_Class
end ανήκε

Όπως βλέπουμε για να γίνει η αλλαγή ορίστηκε μια οντότητα Κατέχει όπου στέλνει δύο νέα
γνωρίσματα το δόθηκε και ανήκε στις οντότητες Αυτοκίνητο και Πρόσωπο αντίστοιχα.
Για την αλλαγή της οντότητας Πώληση ορίστηκε σαν όρισμα και καταργήθηκαν τα ορίσματα
πωλούμενο είδος και πωλητής
γ)
Η λύση σε κώδικα Telos του ζητούμενου είναι :

TELL Individual ΚωδικόςΑριθμός in S_Class


end ΚωδικόςΑριθμός

TELL Individual ΤύποςΚωδικού in S_Class


end ΤύποςΚωδικού

TELL Individual ΤιμήΚωδικού in S_Class


end ΤιμήΚωδικού

TELL Individual Κωδικός in S_Class


end Κωδικός

TELL Attribute έχειΤύπο


from: Κωδικός
to: ΤύποςΚωδικού
in S_Class
end έχειΤύπο
TELL Attribute έχειΤιμή
from: Κωδικός
to: ΤιμήΚωδικού
in S_Class
end έχειΤιμή

TELL Individual Αντικείμενο in S_Class


with attribute
κωδικός: Κωδικός
end Αντικείμενο

TELL Individual Αυτοκίνητο in S_Class isA Αντικείμενο


with attribute
κωδικός: Κωδικός
end Αυτοκίνητο

TELL Individual Κινητήρας in S_Class isA Αντικείμενο


with attribute
κωδικός: Κωδικός
end Κινητήρας

TELL Individual Πρόσωπο in S_Class isA Αντικείμενο


with attribute
κωδικός: Κωδικός
end Πρόσωπο

TELL Individual Αξία in S_Class


end Αξία

TELL Individual Πώληση in S_Class


end Πώληση
TELL Individual Ημερομηνία in S_Class
end Ημερομηνία

TELL Attribute έχειΜέρος


from: Αυτοκίνητο
to: Κινητήρας
in S_Class
end έχειΜέρος

TELL Attribute αριθμόςΚινητήρα


from: Κινητήρας
to: Κωδικός
in S_Class
end αριθμόςΚινητήρα

TELL Attribute αριθμόςΠλαισίου


from: Αυτοκίνητο
to: Κωδικός
in S_Class
end αριθμόςΠλαισίου

TELL Attribute αριθμόςΤαυτότητας


from: Πρόσωπο
to: Κωδικός
in S_Class
end αριθμόςΤαυτότητας

TELL Attribute πώληση


from: Πρόσωπο
to: Αυτοκίνητο
in S_Class
with attribute
ημερομηνίαΑγοράς: Ημερομηνία
end
end πώληση

TELL Attribute πωλητής


from: Πώληση
to: Πρόσωπο
in S_Class
end πωλητής

TELL Attribute τιμή


from: Πώληση
to: Αξία
in S_Class
end τιμή

TELL Attribute πωλούμενοΕίδος


from: Πώληση
to: Αυτοκίνητο
in S_Class
end πωλούμενοΕίδος

Για να διασφαλίσουμε τη διάκριση των ειδών κωδικών και να εξασφαλίσουμε ότι όλοι οι
κωδικοί λαμβάνουν υποχρεωτικά μία και μόνο τιμή, εισαγάγουμε μια νέα κλάση Κωδικός η
οποία θα αντιπροσωπεύει τους διάφορους κωδικούς και επεκτείνουμε την κλάση Αντικείμενο
με ένα γνώρισμα κωδικός το οποίο θα συνδέεται με την κλάση Κωδικός.
Με αυτήν παραπάνω επέκταση, δημιουργήσαμε μια νέα κλάση Κωδικός που αντιπροσωπεύει
τους διάφορους κωδικούς, καθώς και τις κλάσεις Αντικείμενο, Αυτοκίνητο, Κινητήρας και
Πρόσωπο που συνδέονται με αυτόν τον τρόπο. Επίσης, τα γνωρίσματα αριθμόςΚινητήρα,
αριθμόςΠλαισίου και αριθμόςΤαυτότητας μπορούν να προκύψουν ως εξειδικεύσεις του
γνωρίσματος κωδικός της κλάσης Αντικείμενο. Τέλος, επεκτείναμε το μοντέλο με τη δήλωση
ότι όλοι οι κωδικοί λαμβάνουν υποχρεωτικά μία και μόνο τιμή.
Άσκηση 3

Η μοντελοποίηση σε Telos είναι η παρακάτω:

Tell Individual Φούρναρης in S_Class


with attribute
name : String
end Φούρναρης

Tell Individual Εταιρεία in S_Class


with attribute
companyname : String
end Εταιρεία

Tell Individual Αλεύρι in S_Class


with attribute
type: String
end Αλεύρι

Tell Individual Προϊόν in S_Class


with attribute
productname: String
end Προϊόν

Tell Individual Αγορά in S_Class


with attribute
qnt: double;
company: Εταιρεία;
prd: Αλεύρι;
person: Φουρναρης;
αξία: double;
date1: date
end Αγορά

Tell Individual ΠώλησειςΜέρας in S_Class


with attribute
qnt: int;
person: Φούρναρης;
prd2: Προϊον;
αξία: double;
date2: date
end Πώληση

TELL Individual Α in Token, Φούρναρης


with
name : "A"
end

TELL Individual B in Token, Εταιρεία


with
companyname : "B"
end

TELL Individual ΑΑΑ in Token, Αλεύρι


with
type : "ΑΑΑ"
end
TELL Individual Φρατζόλα in Token, Προϊόν
with
productname : "Φρατζόλα"
end

TELL Individual Αγορα1 in Token, Αγορά


with
qnt: 20;
company: Β;
prd: ΑΑΑ;
person: A;
αξία: 1.20;
date1: '21/03/2020'
end

TELL Individual Πώληση1 in Token, ΠώλησειςΜέρας


with
qnt: 70;
Person: A;
prd2: Φρατζόλα;
αξία: 1.10;
date2: '23/03/2020'
end

Το αντίστοιχο διάγραμμα σε UML είναι το παρακάτω:

You might also like