Skip to content

Commit

Permalink
feat: introduction ✨
Browse files Browse the repository at this point in the history
  • Loading branch information
0h My Goat committed Nov 20, 2023
1 parent ca869aa commit 507a43d
Show file tree
Hide file tree
Showing 8 changed files with 359 additions and 5 deletions.
53 changes: 49 additions & 4 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -5,13 +5,58 @@
## Description et objectifs 🎯

<!--- Décrire le cours en quelques lignes -->
Ce cours est destiné aux débutants en programmation orientée objet.
Nous aborderons les différents concepts, les bonnes pratiques de développement ainsi que les outils.

## Plan de cours 🗺️

<!---
- [ ] Chapitre
-->

- [x] [Introduction](./cours/00_introduction.slides.md)
- Qu'est-ce que la programmation orientée objet ?
- Pourquoi utiliser la POO ?
- Introduction aux piliers de la POO
- Présentation générale de Java
- Installation de l'environnement de développement
- [ ] [Les bases](./cours/01_bases.slides.md)
- Les variables
- Les opérateurs
- Les conditions
- Les boucles
- Les tableaux
- Les fonctions
- [ ] [Encapsulation](./cours/02_encapsulation.slides.md)
- Définition
- Les accesseurs
- Les mutateurs
- Les constructeurs
- Les attributs
- [ ] [Héritage](./cours/03_heritage.slides.md)
- Définition
- Les Superclasses
- Les Sous-classes
- [ ] [Abstraction](./cours/04_abstraction.slides.md)
- Définition
- Les classes concrêtes
- Les classes abstraites
- Les interfaces
- [ ] [Polymorphisme](./cours/05_polymorphisme.slides.md)
- Définition
- Utilisation
- Override
- Overload
- [ ] [Exceptions](./cours/06_exceptions.slides.md)
- Définition
- Arborescence
- Utilisation
- [ ] [Lambda](./cours/07_lambda.slides.md)
- Définition
- Utilisation
- [ ] [Threads](./cours/08_threads.slides.md)
- Définition
- Utilisation
- [ ] [Généricité](./cours/10_genericite.slides.md)
- Définition
- Utilisation

## Suivre ce cours 📚

Expand Down
3 changes: 2 additions & 1 deletion cours/00_index.slides.md
Original file line number Diff line number Diff line change
Expand Up @@ -9,4 +9,5 @@ contributors:

# Index

- [Intitulé](./cours/nom.md)
- [Introduction](./cours/01_introduction.slides.html)
- [Bases](./cours/02_bases.slides.html)
289 changes: 289 additions & 0 deletions cours/01_introduction.slides.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,289 @@
---
title: Java POO - Introduction
theme: solarized
author: Alexandre Devos
company: Octocorn
contributors:
- Alexandre Devos
sources:
-
---

# POO

![Logo Java](./assets/java.png) <!-- .element width="20%" -->

----

## POO
### Définition

- **P**rogrammation **O**rientée **O**bjet
- **Paradigme** de programmation
- Consiste à définir des **objets** et à les faire interagir entre eux

----

## POO
### Histoire

- Apparu dans les années 60 avec Simula 67
- Suivi de Smalltalk
- Percée majeure dans les années 80 avec C++ !
- Puis Java, C#, Python, ...

----

## POO
### Les classes

- Un objet est une **entité** qui possède des **attributs** et des **méthodes**
- **Méthodes** : ce que peut faire l'objet
- **Attributs** : ce qui constitue l'objet
- **Classe** : Modèle qui permet de créer des objets

----

## POO
### Exemple

Un marteau est caractérisé par :
- Sa marque
- Son poids
- Son Type (marteau, masse, ...)

> Ces informations sont les **attributs** du marteau
----

## POO
### Exemple

Un marteau peut :
- Frapper
- Clouer

> Ce sont les **méthodes** du marteau
----

## POO
### Exemple

En UML, on le représenterai comme suit :

![marteau_uml](./assets/marteau_uml.png) <!-- .element width="20%" -->

----

## POO
### Classes

- Les classes nous assurent que tous nos objets auront les mêmes attributs et les mêmes méthodes
- On parle aussi de **modèle** ou de **plan**

----

## POO
### Instanciation

![Instance Marteau](assets/instance-marteau.png)

- Les objets sont des **instances** de classes
- On peut créer autant d'objets que l'on veut à partir d'une classe
- On dit que l'on **instancie** une classe pour créer un objet

---

# POO
## Piliers

La POO est basée sur 4 piliers :
- **Encapsulation**
- **Héritage**
- **Abstraction**
- **Polymorphisme**

----

## POO
### Encapsulation

- Permet de **protéger**, **cacher** et **sécuriser** les données
- Passe par l'utilisation de méthodes spéciales : **accesseurs** et **mutateurs**
- Implique de définir une portée pour les attributs et les méthodes

> Je n'ai pas besoin de savoir comment fonctionne un moteur pour utiliser une voiture
----

## POO
### Héritage

- Permet de **réutiliser** du code
- Une classe parente (ou **superclasse**) peut être étendue par une classe enfant (ou **sous-classe**)
- La sous-classe hérite des attributs et des méthodes de la superclasse

> Une voiture est un véhicule, elle hérite donc de ses attributs et de ses méthodes
----

## POO
### Abstraction

- Permet de **simplifier** la complexité
- On ne garde que les informations **pertinentes**
- On peut créer des classes abstraites et des interfaces

> Une voiture est un véhicule, mais un véhicule n'est pas forcément une voiture
----

## POO
### Polymorphisme

- Permet de **généraliser** le comportement
- Une méthode peut avoir plusieurs comportements différents

> Faire le plein sur une voiture électrique n'a pas le même comportement que sur une voiture à essence
----

## POO
### Les piliers

> Don't panic !
Nous aborderons ces concepts en détail dans les prochains chapitres !

---

# Java POO - Introduction

![Logo Java](./assets/java.png) <!-- .element width="20%" -->

----

## Java - Histoire
### Green Project

- 1990 : Sun Microsystems lance le projet Green
- Objectif : créer un langage pour les appareils électroniques hétérogènes

> La domotique avant l'heure !
----

## Java - Histoire
### Green Project

- Un bon début en 1992, mais **le marché n'est pas prêt**
- 1994 : Projet recentré sur le Web !

----

## Java - Histoire
### WebRunner

- 1995 : Sortie de WebRunner
- Premier navigateur Web capable d'exécuter du code Java

> Multiplateforme, animations, interactivité, ...
----

## Java - Histoire
### Puis, généralisation

- 1995 : Publication du code source de Java
- 1995 et 1996 : Intégration de Java dans les navigateurs (Netscape, Internet Explorer, ...)

> Java est partout !
----

## Java - De nos jours

- Toujours présent dans les navigateurs !
- Toujours présent dans les applications de bureau !
- Utilisé dans les applications mobiles (Android)
- A inspiré de nombreux langages (C#, JavaScript, TypeScript, ...)

---

# Java - Installation

![Logo Java](./assets/java.png) <!-- .element width="20%" align="left" -->

![IntelliJ](assets/intellij.png) <!-- .element width="30%" align="right" -->

----

## Java
### JDK

- **J**ava **D**evelopment **K**it
- Contient le **J**ava **R**untime **E**nvironment (JRE)
- Contient le **Java** **C**ompiler (javac)

> Le JRE permet d'exécuter du code Java
----

## Java
### JDK

Pour l'obtenir :
- Sur le site d'[Oracle](https://www.oracle.com/java/technologies/javase-downloads.html)
- Sur le site d'[OpenJDK](https://jdk.java.net/java-se-ri/17)
- Sur le site de [Microsoft](https://learn.microsoft.com/fr-fr/java/openjdk/download)
- Téléchargeable automatiquement via certains IDE !

> Versions majeures : 8, 11 et 17 et 21
----

## Java
### Installation

- Une fois téléchargé, placez le JDK dans un dossier de votre choix (racine de C:, par exemple)
- Ajoutez le chemin du JDK dans la variable d'environnement `PATH`
- Ajoutez `JAVA_HOME` dans les variables d'environnement et pointez vers le dossier du JDK
- Vérifiez que tout fonctionne en ouvrant un terminal et en tapant `java -version`

----

## Java
### IDE : Pick your poison

Il existe plusieurs IDE pour Java :
- [Eclipse](https://www.eclipse.org/downloads/)
- [NetBeans](https://netbeans.apache.org/download/index.html)
- [IntelliJ IDEA](https://www.jetbrains.com/fr-fr/idea/download/)

> Nous utiliserons IntelliJ IDEA !
----

## Java
### IntelliJ IDEA

- Téléchargeable sur le site de [JetBrains](https://www.jetbrains.com/fr-fr/idea/download/)
- Version Ultimate (payante) ou Community (gratuite)

> Étudiant ? Vous pouvez bénéficier de la [version Ultimate gratuitement](https://www.jetbrains.com/community/education/#students) !
----

## Java
### IntelliJ IDEA

- Une fois téléchargé, installez le logiciel
- Lancez IntelliJ IDEA
- Dans File > Project Structure : Sélectionnez le JDK installé précédemment ou téléchargez-en un !

---

## La suite !

[Index](index.html)
19 changes: 19 additions & 0 deletions cours/02_bases.slides.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
---
title: Java POO - Bases
theme: solarized
author: Alexandre Devos
company: Octocorn
contributors:
- Alexandre Devos
sources:
-
---

# Java - Bases

![Logo Java](./assets/java.png) <!-- .element width="20%" align="left" -->

![IntelliJ](assets/intellij.png) <!-- .element width="30%" align="right" -->

----

Binary file added cours/assets/instance-marteau.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added cours/assets/intellij.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added cours/assets/java.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added cours/assets/marteau_uml.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.

0 comments on commit 507a43d

Please sign in to comment.