Skip to content

Commit 5ff7229

Browse files
committed
Add, documentation and license
1 parent 402df28 commit 5ff7229

3 files changed

Lines changed: 89 additions & 69 deletions

File tree

LICENSE

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
MIT License
2+
3+
Copyright (c) 2021 ftech
4+
5+
Permission is hereby granted, free of charge, to any person obtaining a copy
6+
of this software and associated documentation files (the "Software"), to deal
7+
in the Software without restriction, including without limitation the rights
8+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9+
copies of the Software, and to permit persons to whom the Software is
10+
furnished to do so, subject to the following conditions:
11+
12+
The above copyright notice and this permission notice shall be included in all
13+
copies or substantial portions of the Software.
14+
15+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21+
SOFTWARE.

README.md

Lines changed: 68 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1,68 @@
1-
# 2020-oop-project-2
1+
## 2020 Oop Project 2 - Exercise 3
2+
3+
## ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΗΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ - 2020/2021 - Β' Ομάδα Ασκήσεων - Άσκηση 3
4+
5+
6+
Εκφώνηση: http://cgi.di.uoa.gr/~izambo/OOPassgn2_2021.pdf
7+
8+
9+
### Προσωπικά Στοιχεία
10+
11+
__Όνομα__: Ιωάννης Ζαπάντης
12+
13+
__Α.Μ.__: sdi1900059
14+
15+
16+
### Παρακάτω υπάρχει το documentation για την Άσκηση 3
17+
18+
### Documentation
19+
20+
Σκοπός της άσκησης αυτής είναι η μοντελοποίηση της πρωινής άφιξης των μαθητών
21+
σε ένα σχολείο. Αυτό γίνεται από την δημιουργία των αντίστοιχων κλάσεων και την
22+
υλοποίηση κατάλληλων συναρτήσεων για την λειτουργικότητά τους.
23+
24+
Έχω ορίσει μία υπερκλάση, την Person, η οποία αποθηκεύει όλα τα στοιχεία ενός ατόμου
25+
είτε είναι μαθητής είτε είναι καθηγητής (λεπτομέρειες για τα στοιχεία-μέλη της βρίσκοντα
26+
στα σχόλια του κώδικα). Υποκλάση αυτής είναι η Teacher που συμπληρώνει όσες συναρτήσεις
27+
χρειάζονται για την λειτουργικότητα του καθηγητή. Ακόμα, ορίζονται και όλες οι συναρτήσεις
28+
που έχουν ορισθεί ως virtual στην Person, καθώς επίσης η Person είναι Abstract class, αφού
29+
ο χρήστης δεν χρειάζεται να έχει πρόσβαση σε αυτή (αυτό επιτυγχάνεται με τον ορισμό pure
30+
virtual συνάρτησης).
31+
32+
Επίσης, έχει υλοποιηθεί η υποκλάση (της Person) Student, η οποία την συμπληρώνει, ώστε να μπορούν
33+
να είναι λειτουργικοί οι μαθητές. Κι αυτή έχει συναρτήσεις ορισμένες σαν pure virtual, αφού ούτε
34+
σε αυτή χρειάζεται να έχει πρόσβαση ο χρήστης (και για αυτό θεωρείται Abstract class). Για τον
35+
χρήστη ορίζονται οι Junior και Senior που διαχωρίζουν τις 2 κατηγορίες των μαθητών και είναι τα
36+
αντικείμενα που μπορεί να "φτιάξει" ο χρήστης (λεπτομέρειες για την υλοποίηση των συναρτήσεων
37+
της καθεμίας κλάσης, καθώς και των μελών της, υπάρχουν στα σχόλια του κώδικα).
38+
39+
Όσον αφορά το σχολικό κτήριο, ακολουθείται η παράκατω δομή. Αρχικά, δημιουργείται μια Abstract
40+
class Room, η οποία περιέχει μεταβλητές και (pure virtual) συναρτήσεις που θα χρησιμοποιηθούν
41+
στις υποκλάσεις: Yard, Stairs, Corridor οι οποίες έχουν κοινά χαρακτηριστικά. Σε αυτές τις 3
42+
υποκλάσεις ορίζονται τα στοιχεία που χρειάζονται για να ολοκληρωθούν, καθώς επίσης και το σώμα
43+
των συναρτήσεων (των pure virtual).
44+
45+
Ακόμα, υπάρχει μια κλάση School, η οποία περιέχει ένα Stairs, ένα Yard και 3 Floors, όπως επίσης
46+
και άλλες μεταβλητές και συναρτήσεις που προσδιορίζουν την λειτουργεία του κτηρίου (στο οποίο
47+
έχει πρόσβαση ο χρήστης. Λεπτομέρειες σχετικά με την υλοποίηση και τις συναρτήσεις βρίσκονται
48+
στα σχόλια του κώδικα). Η class Floor, αντίστοιχα περιέχει έναν Corridor και 6 class Classroom (αίθουσες).
49+
Επίσης, υπάρχουν μεταβλητές και συναρτήσεις που χρησιμεύουν στην λειτουργία του. Τέλος, υπάρχει
50+
και η κλάση Classroom (αίθουσα), η οποία και αυτή έχει ό,τι χρειάζεται για να είναι λειτουργική
51+
(λεπτομέρειες υπάρχουν εκτενέστερα στα σχόλια του κώδικα).
52+
53+
Η main ακολουθεί τις οδηγίες της εκφώνησης και δημιουργεί ένα σχολικό κτήριο, μαθητές, καθηγητές
54+
και τους βάζει με τυχαία σειρά στο σχολείο. Έπειτα, το σχολείο λειτουργεί για Ν ώρες και ύστερα
55+
εκτυπώνεται (όπως αναφέρεται στην εκφώνηση). Μαζί υπάρχει και ένα Makefile, το οποίο είναι αρκετά
56+
απλό με εντολές make για μεταγλώττιση των αρχείων, run για εκτέλεση του προγράμματος, clean για
57+
διαγραφή των παραγόμενων αρχείων και valgrind για τρέξιμο του valgrind (έλεγχος για memory
58+
leaks).
59+
60+
[Το πρόγραμμα τρέχει σωστά και χωρίς leaks σε linux (εκτός από ένα bug που υπάρχει στην έκδοση του valgrind
61+
και εμφανίζει 72,704 bytes still reachable) της σχολής]
62+
63+
Η πλήρης εντολή μεταγλώττισης είναι: g++ -o main main.cpp School.cpp
64+
Για εκτέλεση του προγράμματος αρκεί να τρέξει: ./main Cclass Lj Ls Lt N
65+
66+
,όπου τα ορίσματα είναι αυτά που περιγράφονται στην εκφώνηση.
67+
Τα ορίσματα διαβάζονται με τον τρόπο που περιγράφεται στην εκφώνηση (δεν γίνεται έλεγχος για
68+
λανθασμένα δεδομένα).

README.txt

Lines changed: 0 additions & 68 deletions
This file was deleted.

0 commit comments

Comments
 (0)