{"id":25417614,"url":"https://github.com/tech-gian/school_simulation_cpp","last_synced_at":"2025-05-05T21:33:35.884Z","repository":{"id":78433154,"uuid":"318659307","full_name":"tech-gian/School_Simulation_cpp","owner":"tech-gian","description":"👨‍🎓📚🏫 A simple school simulation made with Object-Oriented Programming principles in C++.","archived":false,"fork":false,"pushed_at":"2021-04-13T15:34:48.000Z","size":68,"stargazers_count":2,"open_issues_count":0,"forks_count":1,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-02-16T18:01:42.671Z","etag":null,"topics":["cpp","oop","oop-cpp","oop-principles","school","school-project","simulation"],"latest_commit_sha":null,"homepage":"https://gianniszapantis.azurewebsites.net/","language":"C++","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/tech-gian.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null}},"created_at":"2020-12-04T23:31:52.000Z","updated_at":"2021-09-29T09:41:56.000Z","dependencies_parsed_at":"2023-04-05T08:49:11.818Z","dependency_job_id":null,"html_url":"https://github.com/tech-gian/School_Simulation_cpp","commit_stats":{"total_commits":21,"total_committers":2,"mean_commits":10.5,"dds":0.04761904761904767,"last_synced_commit":"5ff7229d2fa1d516c0e21770af69f69d5c2bc476"},"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tech-gian%2FSchool_Simulation_cpp","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tech-gian%2FSchool_Simulation_cpp/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tech-gian%2FSchool_Simulation_cpp/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tech-gian%2FSchool_Simulation_cpp/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/tech-gian","download_url":"https://codeload.github.com/tech-gian/School_Simulation_cpp/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":252580128,"owners_count":21771267,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["cpp","oop","oop-cpp","oop-principles","school","school-project","simulation"],"created_at":"2025-02-16T18:00:49.598Z","updated_at":"2025-05-05T21:33:35.818Z","avatar_url":"https://github.com/tech-gian.png","language":"C++","readme":"## 2020 Oop Project 2 - Exercise 3\r\n\r\n## ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΗΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ - 2020/2021 - Β' Ομάδα Ασκήσεων - Άσκηση 3\r\n\r\n\r\nΕκφώνηση: http://cgi.di.uoa.gr/~izambo/OOPassgn2_2021.pdf\r\n\r\n\r\n### Προσωπικά Στοιχεία\r\n\r\n__Όνομα__: Ιωάννης Ζαπάντης\r\n\r\n__Α.Μ.__: sdi1900059\r\n\r\n\r\n### Παρακάτω υπάρχει το documentation για την Άσκηση 3\r\n\r\n### Documentation\r\n\r\nΣκοπός της άσκησης αυτής είναι η μοντελοποίηση της πρωινής άφιξης των μαθητών\r\nσε ένα σχολείο. Αυτό γίνεται από την δημιουργία των αντίστοιχων κλάσεων και την\r\nυλοποίηση κατάλληλων συναρτήσεων για την λειτουργικότητά τους.\r\n\r\nΈχω ορίσει μία υπερκλάση, την Person, η οποία αποθηκεύει όλα τα στοιχεία ενός ατόμου\r\nείτε είναι μαθητής είτε είναι καθηγητής (λεπτομέρειες για τα στοιχεία-μέλη της βρίσκοντα\r\nστα σχόλια του κώδικα). Υποκλάση αυτής είναι η Teacher που συμπληρώνει όσες συναρτήσεις\r\nχρειάζονται για την λειτουργικότητα του καθηγητή. Ακόμα, ορίζονται και όλες οι συναρτήσεις\r\nπου έχουν ορισθεί ως virtual στην Person, καθώς επίσης η Person είναι Abstract class, αφού\r\nο χρήστης δεν χρειάζεται να έχει πρόσβαση σε αυτή (αυτό επιτυγχάνεται με τον ορισμό pure\r\nvirtual συνάρτησης).\r\n\r\nΕπίσης, έχει υλοποιηθεί η υποκλάση (της Person) Student, η οποία την συμπληρώνει, ώστε να μπορούν\r\nνα είναι λειτουργικοί οι μαθητές. Κι αυτή έχει συναρτήσεις ορισμένες σαν pure virtual, αφού ούτε\r\nσε αυτή χρειάζεται να έχει πρόσβαση ο χρήστης (και για αυτό θεωρείται Abstract class). Για τον\r\nχρήστη ορίζονται οι Junior και Senior που διαχωρίζουν τις 2 κατηγορίες των μαθητών και είναι τα\r\nαντικείμενα που μπορεί να \"φτιάξει\" ο χρήστης (λεπτομέρειες για την υλοποίηση των συναρτήσεων\r\nτης καθεμίας κλάσης, καθώς και των μελών της, υπάρχουν στα σχόλια του κώδικα).\r\n\r\nΌσον αφορά το σχολικό κτήριο, ακολουθείται η παράκατω δομή. Αρχικά, δημιουργείται μια Abstract\r\nclass Room, η οποία περιέχει μεταβλητές και (pure virtual) συναρτήσεις που θα χρησιμοποιηθούν\r\nστις υποκλάσεις: Yard, Stairs, Corridor οι οποίες έχουν κοινά χαρακτηριστικά. Σε αυτές τις 3\r\nυποκλάσεις ορίζονται τα στοιχεία που χρειάζονται για να ολοκληρωθούν, καθώς επίσης και το σώμα\r\nτων συναρτήσεων (των pure virtual).\r\n\r\nΑκόμα, υπάρχει μια κλάση School, η οποία περιέχει ένα Stairs, ένα Yard και 3 Floors, όπως επίσης\r\nκαι άλλες μεταβλητές και συναρτήσεις που προσδιορίζουν την λειτουργεία του κτηρίου (στο οποίο\r\nέχει πρόσβαση ο χρήστης. Λεπτομέρειες σχετικά με την υλοποίηση και τις συναρτήσεις βρίσκονται\r\nστα σχόλια του κώδικα). Η class Floor, αντίστοιχα περιέχει έναν Corridor και 6 class Classroom (αίθουσες).\r\nΕπίσης, υπάρχουν μεταβλητές και συναρτήσεις που χρησιμεύουν στην λειτουργία του. Τέλος, υπάρχει\r\nκαι η κλάση Classroom (αίθουσα), η οποία και αυτή έχει ό,τι χρειάζεται για να είναι λειτουργική\r\n(λεπτομέρειες υπάρχουν εκτενέστερα στα σχόλια του κώδικα).\r\n\r\nΗ main ακολουθεί τις οδηγίες της εκφώνησης και δημιουργεί ένα σχολικό κτήριο, μαθητές, καθηγητές\r\nκαι τους βάζει με τυχαία σειρά στο σχολείο. Έπειτα, το σχολείο λειτουργεί για Ν ώρες και ύστερα\r\nεκτυπώνεται (όπως αναφέρεται στην εκφώνηση). Μαζί υπάρχει και ένα Makefile, το οποίο είναι αρκετά\r\nαπλό με εντολές make για μεταγλώττιση των αρχείων, run για εκτέλεση του προγράμματος, clean για\r\nδιαγραφή των παραγόμενων αρχείων και valgrind για τρέξιμο του valgrind (έλεγχος για memory\r\nleaks).\r\n\r\n[Το πρόγραμμα τρέχει σωστά και χωρίς leaks σε linux (εκτός από ένα bug που υπάρχει στην έκδοση του valgrind\r\nκαι εμφανίζει 72,704 bytes still reachable) της σχολής]\r\n\r\nΗ πλήρης εντολή μεταγλώττισης είναι: g++ -o main main.cpp School.cpp\r\nΓια εκτέλεση του προγράμματος αρκεί να τρέξει: ./main Cclass Lj Ls Lt N\r\n\r\n,όπου τα ορίσματα είναι αυτά που περιγράφονται στην εκφώνηση.\r\nΤα ορίσματα διαβάζονται με τον τρόπο που περιγράφεται στην εκφώνηση (δεν γίνεται έλεγχος για\r\nλανθασμένα δεδομένα).\r\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftech-gian%2Fschool_simulation_cpp","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ftech-gian%2Fschool_simulation_cpp","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftech-gian%2Fschool_simulation_cpp/lists"}