Introduction
Oh mais c’est bientôt l’heure des examens! Malheureusement, les Schtroumpfs on passé leurs vacances à réveillonner.
Pendant les vacances ils ont totalement oublié toutes les notions qu’ils ont vu lors du premier semestre…
Heureusement le grand Schtroumpf a pensé à eux et a préparé un TP pour les aider à réviser. :D
Tree
.
├── README.md
├── SmurfStudies/
│ ├── City.cs
│ ├── Course.cs
│ ├── Date.cs
│ ├── Person.cs
│ ├── Prof.cs
│ ├── Program.cs
│ ├── Room.cs
│ ├── SmurfStudies.csproj
│ ├── Student.cs
│ └── Subject.cs
└── SoutienPartiel.sln
Setup
City.cs
Pour commencer, nous vous donnons les différentes villes d’où peuvent venir les élèves.
Notez que nous stockerons ces villes dans un type énumérateur nommé : City
public enum City
{
PARIS,
LYON,
TOULOUSE,
RENNES,
STRASBOURG,
};
Subject.cs
Nous vous donnons également les différentes matières sur lesquelles les élèves seront intérrogés.
Notez que nous stockerons ces matières dans un type énumérateur nommé : Subject
public enum Subject
{
MATH,
ALGO,
PROG,
ELEC,
PHYS,
ARCHI,
METHODO,
ANGLAIS,
};
Date.cs
Ensuite, chaque élève doit avoir sa date de naissance. Pour cela, nous allons implémenter une classe Date
/// <summary>
/// Prototype de la classe Date
/// </summary>
public Date(int day, int month, int year);
A noter que : notre classe Date
contient les propriétés suivantes :
Day
, un entier public avec un getter et un setter publics.Month
, un entier public avec un getter et un setter publics.Year
, un entier public avec un getter et un setter publics.
Attention, un élève ne peut pas avoir une date invalide. Si une date est invalide, lancer : ArgumentException
.
Tip : Vérifie que la date est correcte ;)
Person.cs
Maintenant, que nous pouvons savoir d’où viennent les élèves et quelle est leur date de naissance, créons notre classe Person
/// <summary>
/// Prototype de la classe Person
/// </summary>
public Person(string firstname, string lastname, Date birthDate, City campus);
A noter que : notre classe Person
contient les attributs suivants :
private string _firstname;
private string _lastname;
Et les propriétés suivantes :
Login
, une chaîne de caractères publique avec un getter public et un setter privéBirthDate
, uneDate
publique avec un getter public et un setter privéCampus
, uneCity
publique avec un getter public et un setter public
De plus, le Login
est une string
qui est composé de : prenom.nom
.
L’HERITAGE
Student.cs
Très bien nous avons une classe Person
mais il faut différencier les professeurs des élèves. Pour cela, nous allons d’abord nous occuper de créer la classe Student
qui hérite de la classe Person
.
/// <summary>
/// Prototype de la classe Student
/// </summary>
public Student(string firstname, string lastname, Date birthDate, City campus, int uid, int promo);
A noter que : la classe Student
possède deux proprités publics :
Uid
, un entier public avec un getter public et un setter publicPromo
, un entier public avec un getter public et un setter public
Prof.cs
Les élèves n’ont pas appris tout seul et les matières ne sont pas corrigées par nimporte qui dans le village !
Il nous faut donc une classe Prof
qui hérite également de la classe Person
.
/// <summary>
/// Prototype de la classe Prof
/// </summary>
public Prof(string firstname, string lastname, Date birthDate, City campus, List<Subject> subjects);
A noter que : comme pour la classe Student
, Prof
a une propriété :
PreferredSubjects
, une liste deSubject
avec un getter public et un setter public
LES COURS
Room.cs
Il ne peut pas y avoir de cours sans salle (sauf pendant la pandémie mais c’était vachement triste).
Chaque salle de classe a un plan de classe. Pour cela, nous avons besoin de la classe : Room
.
/// <summary>
/// Prototype de la classe Room
/// </summary>
public Room(List<Student> students);
A noter que : la classe Room
contient une propriété :
Student[,] ClassPlan
, une matrice deStudent
avec un getter public et un setter public
Chaque classe est construite de la même façon : 7 rangées de 6 tables.
On va se dire que les étudiants vont se mettre à leur place définie en fonction de leur ordre dans la liste donnée en argument. (On les place colonnes par colonnes en commençant par la dernières rangée).
Attention : Il n’y aura pas toujours assez d’élève pour remplir la salle de classe.
TIP : On peut se dire que plus le nombre (de la colonne ou de la rangée) est élevé, plus il est loin de la porte/au fond.
Course.cs
Maintenant qu’il y a une salle pour accueillir le cours, il faut savoir où chaque cours se déroulera.
Pour cela, rien de plus simple, il nous faut créer une classe Course
/// <summary>
/// Prototype de la classe Course
/// </summary>
public Course(Prof prof, Subject subject, Room room, int startTime, int duration);
A noter que : la classe Course
contient des propriétés :
Prof
, unProf
avec un getter public et un setter publicStudents
, une listeStudent
avec un getter public et un setter publicRoom
, uneRoom
avec un getter public et un setter publicSubject
, unSubject
avec un getter public et un setter privéStartTime
, un entier avec un getter public et un setter privéDuration
, un entier avec un getter public et un setter privé
Fin
Grâce à ce petit TP récapitulatif sur les classes, le grand Schtroumpf a bien aidé les Schtroumpfs du village à réviser pour leurs examens. :D