Skip to content

Commit

Permalink
TP Revision partiels B2 (#29)
Browse files Browse the repository at this point in the history
* add(SoutienPartiel) v1 tp de revision

* rephrasing

* finals take place on b2 and not b1

* Readme changed

* Rephrasing
  • Loading branch information
Villosse authored Jan 5, 2024
1 parent dc03901 commit af9416f
Show file tree
Hide file tree
Showing 5 changed files with 209 additions and 2 deletions.
8 changes: 8 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,13 @@
# Programmation Sup

## Comment lancer le serveur en local ?

Vous aurez besoin du package [`hugo`](https://github.com/gohugoio/hugo)

Ensuite, il faudra charger le thème du site : `git submodule update --init themes/PaperMod/`

Enfin, vous pourrez lancer le serveur en local avec la commande : `hugo server`

## Comment créer un nouveau sujet ?

Il suffit de taper cette commande :
Expand Down
10 changes: 8 additions & 2 deletions config.yml
Original file line number Diff line number Diff line change
Expand Up @@ -28,6 +28,8 @@ params:
buttons:
- name: "Sujets B1"
url: b1
- name: "Sujets B2"
url: b2
- name: "Sujets S1"
url: s1
- name: "Sujets S2"
Expand All @@ -50,11 +52,15 @@ menu:
name: "Sujets B1"
url: b1
weight: 5
- identifier: b2
name: "Sujets B2"
url: b2
weight: 10
- identifier: s1
name: "Sujets S1"
url: s1
weight: 10
weight: 15
- identifier: s2
name: "Sujets S2"
url: s2
weight: 15
weight: 20
193 changes: 193 additions & 0 deletions content/b2/SoutienPartiel/index.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,193 @@
---
title: "Smurf Studies"
date: 2024-01-04T02:33:57+01:00
authors: ["FIXME"]
---

# 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

```bash
.
├── 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`

```csharp
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`

```csharp
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`

```csharp
/// <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`
```csharp
/// <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`, une `Date` publique avec un getter public et un setter privé
- `Campus`, une `City` 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`.

```csharp
/// <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 public
- `Promo`, 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`.


```csharp
/// <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 de `Subject` 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`.

```csharp
/// <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 de `Student` 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`

```csharp
/// <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`, un `Prof` avec un getter public et un setter public
- `Students`, une liste `Student` avec un getter public et un setter public
- `Room`, une `Room` avec un getter public et un setter public
- `Subject`, un `Subject` 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
Empty file.
Empty file.

0 comments on commit af9416f

Please sign in to comment.