Skip to content

👨‍🎓📚🏫 A simple school simulation made with Object-Oriented Programming principles in C++.

License

Notifications You must be signed in to change notification settings

tech-gian/School_Simulation_cpp

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

22 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

2020 Oop Project 2 - Exercise 3

ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΗΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ - 2020/2021 - Β' Ομάδα Ασκήσεων - Άσκηση 3

Εκφώνηση: http://cgi.di.uoa.gr/~izambo/OOPassgn2_2021.pdf

Προσωπικά Στοιχεία

Όνομα: Ιωάννης Ζαπάντης

Α.Μ.: sdi1900059

Παρακάτω υπάρχει το documentation για την Άσκηση 3

Documentation

Σκοπός της άσκησης αυτής είναι η μοντελοποίηση της πρωινής άφιξης των μαθητών σε ένα σχολείο. Αυτό γίνεται από την δημιουργία των αντίστοιχων κλάσεων και την υλοποίηση κατάλληλων συναρτήσεων για την λειτουργικότητά τους.

Έχω ορίσει μία υπερκλάση, την Person, η οποία αποθηκεύει όλα τα στοιχεία ενός ατόμου είτε είναι μαθητής είτε είναι καθηγητής (λεπτομέρειες για τα στοιχεία-μέλη της βρίσκοντα στα σχόλια του κώδικα). Υποκλάση αυτής είναι η Teacher που συμπληρώνει όσες συναρτήσεις χρειάζονται για την λειτουργικότητα του καθηγητή. Ακόμα, ορίζονται και όλες οι συναρτήσεις που έχουν ορισθεί ως virtual στην Person, καθώς επίσης η Person είναι Abstract class, αφού ο χρήστης δεν χρειάζεται να έχει πρόσβαση σε αυτή (αυτό επιτυγχάνεται με τον ορισμό pure virtual συνάρτησης).

Επίσης, έχει υλοποιηθεί η υποκλάση (της Person) Student, η οποία την συμπληρώνει, ώστε να μπορούν να είναι λειτουργικοί οι μαθητές. Κι αυτή έχει συναρτήσεις ορισμένες σαν pure virtual, αφού ούτε σε αυτή χρειάζεται να έχει πρόσβαση ο χρήστης (και για αυτό θεωρείται Abstract class). Για τον χρήστη ορίζονται οι Junior και Senior που διαχωρίζουν τις 2 κατηγορίες των μαθητών και είναι τα αντικείμενα που μπορεί να "φτιάξει" ο χρήστης (λεπτομέρειες για την υλοποίηση των συναρτήσεων της καθεμίας κλάσης, καθώς και των μελών της, υπάρχουν στα σχόλια του κώδικα).

Όσον αφορά το σχολικό κτήριο, ακολουθείται η παράκατω δομή. Αρχικά, δημιουργείται μια Abstract class Room, η οποία περιέχει μεταβλητές και (pure virtual) συναρτήσεις που θα χρησιμοποιηθούν στις υποκλάσεις: Yard, Stairs, Corridor οι οποίες έχουν κοινά χαρακτηριστικά. Σε αυτές τις 3 υποκλάσεις ορίζονται τα στοιχεία που χρειάζονται για να ολοκληρωθούν, καθώς επίσης και το σώμα των συναρτήσεων (των pure virtual).

Ακόμα, υπάρχει μια κλάση School, η οποία περιέχει ένα Stairs, ένα Yard και 3 Floors, όπως επίσης και άλλες μεταβλητές και συναρτήσεις που προσδιορίζουν την λειτουργεία του κτηρίου (στο οποίο έχει πρόσβαση ο χρήστης. Λεπτομέρειες σχετικά με την υλοποίηση και τις συναρτήσεις βρίσκονται στα σχόλια του κώδικα). Η class Floor, αντίστοιχα περιέχει έναν Corridor και 6 class Classroom (αίθουσες). Επίσης, υπάρχουν μεταβλητές και συναρτήσεις που χρησιμεύουν στην λειτουργία του. Τέλος, υπάρχει και η κλάση Classroom (αίθουσα), η οποία και αυτή έχει ό,τι χρειάζεται για να είναι λειτουργική (λεπτομέρειες υπάρχουν εκτενέστερα στα σχόλια του κώδικα).

Η main ακολουθεί τις οδηγίες της εκφώνησης και δημιουργεί ένα σχολικό κτήριο, μαθητές, καθηγητές και τους βάζει με τυχαία σειρά στο σχολείο. Έπειτα, το σχολείο λειτουργεί για Ν ώρες και ύστερα εκτυπώνεται (όπως αναφέρεται στην εκφώνηση). Μαζί υπάρχει και ένα Makefile, το οποίο είναι αρκετά απλό με εντολές make για μεταγλώττιση των αρχείων, run για εκτέλεση του προγράμματος, clean για διαγραφή των παραγόμενων αρχείων και valgrind για τρέξιμο του valgrind (έλεγχος για memory leaks).

[Το πρόγραμμα τρέχει σωστά και χωρίς leaks σε linux (εκτός από ένα bug που υπάρχει στην έκδοση του valgrind και εμφανίζει 72,704 bytes still reachable) της σχολής]

Η πλήρης εντολή μεταγλώττισης είναι: g++ -o main main.cpp School.cpp Για εκτέλεση του προγράμματος αρκεί να τρέξει: ./main Cclass Lj Ls Lt N

,όπου τα ορίσματα είναι αυτά που περιγράφονται στην εκφώνηση. Τα ορίσματα διαβάζονται με τον τρόπο που περιγράφεται στην εκφώνηση (δεν γίνεται έλεγχος για λανθασμένα δεδομένα).

About

👨‍🎓📚🏫 A simple school simulation made with Object-Oriented Programming principles in C++.

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published