Académique Documents
Professionnel Documents
Culture Documents
Classe:
Les Flux:
Ce sont des fichiers, exploités sous forme de canaux unidirectionnel input/output.
Classes HELPER:
Ce sont des utilitaires.
Pour les trouver c’est simple car ce sont les seules à être pluriels.
POO:
https://apprendre-la-programmation.net/programmation-orientee-objet/
Les trois principes de la POO sont l'encapsulation, l'héritage et Polymorphisme
1
JAVA:
POJO:
Plain Old Java Object (Java Bean ≠ POJO)
C’est une classe qui implémente la classe sérialisable.
Elle doit avoir un constructeur par défaut (c’est tout).
Ses attributs sont privés avec des méthodes accesseurs.
Rôle:Véhiculer de l’information.
Pas de traitement!!!
très utilisé dans les BDD.
POJO : Classe avec uniquement des attributs privés et un constructeur par défaut.
NE RÉALISE PAS DE TRAITEMENT.
Réification:
Le fait de transformer un concept en objet.
1) Concept => Objet
Classe => Objet
Classe ==
Attributs,Méthodes,Nom,constructeurs,Visibilitée,Modificateurs, Packages.
DAO:
Data Access Object (ADO chez Microsoft).
Doit implémenter les méthodes en utilisant le C.R.U.D .
IOC:
Invert Of Control
Permet l’injection de dépendances , par exemple via des fichiers de config ( *.property/*.ini).
Utile pour ne pas avoir à recompiler le code pour pouvoir changer les valeurs qui se trouvent
dans des fichiers.
2
CRUD:
ORM:
Object Relational Mapping
ORB:
Implémentent un bus logiciel par lequel des objets envoient et reçoivent des requêtes et des
réponses, de manière transparente et portable
EJB:
Entreprise d'objet accessible de loin permettant de dispatcher les objets sur plusieurs
machines, la haute disponibilitée etc…
Threads:
C bien c:
Framework -> executor (haut niveau)
3
JDBC:
Bas niveau
4
JPA:
Haut niveau
5
ACID:
Atomicité, Cohérence, Isolation, Durabilité
Polymorphisme de type:
En java on utilise l’opérateur ‘diamant’ pour spécifier le type(pour une liste générique).
JVM:
La jvm charge les classes dans la ram avec le Classloader sous forme d’objet de type class
(classLoader).
<Réïfication>:La jvm va instancier les classes avec une metaclass.
6
Mot clé statique:
A utiliser avec parcimonie.
Permet de symboliser les attribut/méthodes de classes.
En UML ça se traduit pas un attribut/méthode souligné.
Créer dès que la classe existe.
Une méthode static ne doit pas altérer les variables de l’obj car on peut l'appeler sans avoir
créer l’obj.
7
Un petit exemple:
8
dans sortir() c’est supérieur et non pas inférieur à Visiteur.MAX.
On peut s’en servir pour des méthodes, elles pourront être appelées même si l'objet n'existe
pas, seront commune au obj instanciant la classe mais elle ne pourront pas travailler avec
des dynamique (créer avec l’obj).
9
Singleton:
Utilisé pour faire de l'interface entre les couches, ne pas en abuser car on casse la
multiplicité/duplicative de l'objet.
Les collections:
Thread safe: Vector (lent),ArrayList (Pas tread safe),
Hashmap: table de hachage (clé, valeur)
10
Le MVC:
La vue à accès au contrôleur, le contrôleur n’a pas accès à la vue mais il pilote le modèle.
Le modèle ne connait rien.
JavaBeans:
Un JavaBeans est une classe qui contient des attributs uniquement privés avec ses
méthodes accesseur (public|protected) plus au moins le constructeur par
défaut.Il a besoin d’implémenter l’interface Serializable.Ce qui permet d’intégrer la classe
dans d’autres projets.
L’objectif des JavaBeans c’est que les modèles implémentent Serializable.
Expression lambda:
https://www.programiz.com/java-programming/lambda-expression
Java Lambda Expressions (With Examples).pdf
maListe.forEach(System.out::println);//Expression lambda
11
Les classe anonymes:
Permet d’instancier les classes non-instanciables pour des tâches spécifiques.
//TODO aller se renseigner
throws suivi du type voulu pour signifier que la méthode peut jeter des exceptions.
throw est équivalent a un return.
public void setMachin(int mach) throws TropDeMachin{
if(mach > 100){
throw new TropDeMachin
}
this.machin = mach;
}
Un throw permet de faire “remonter” l’erreur pour qu’un try catch la récupère
Attraper:
try{
-A1
-A2
-A3
print("ok")
}catch(PbException){
print("PB")
}
print("FIN")
SI pas de pb alors il sera affiché ok suivi de FIN, mais si il y a une erreur alors ça sera PB
suivit de FIN bien que FIN puisse ne pas s’afficher dans le cas où il y aurait un return dans
le catch.
Créer:
12
Les runTimeException sont donc des exception lier à des erreurs de programmations.Si on
dérive de RunTimeException les classes n’auront pas à faire les try catch,c’est donc pour les
programmes systèmes ou bien embarqué.On dérive donc couramment de la classe
Exception.
13
Eclipse:
Générer la javadoc:
projet → générer javadoc
La visibilitée dépendra de la personne qui utilisera le programme client
→public,programmeur →private
Ajouter un connecteur:
click droit sur le projet → propriétés → facet, cochet web module et jpa, ne pas oublier de
configurer le jpa.
14
UML:
La cardinalité maximum ayant un nombre fini correspond à un tableau et si c’est un ‘n’ alors
c’est une collection.
Un acteur est quelque chose qui interagit directement avec le système.
Délégations:
Toutes les délégations se traduisent par un attribut handler.
Association:
Agrégation:
15
Composition:
A est responsable de B.
A ne peut vivre sans B.
B ne peut vivre sans A.
cardinalité minimale de 1.
Il n’y a donc pas besoin de vérifier la présence de B.
B est construit dans A avec new().
Il y a obligatoirement zéro méthode faisant apparaître l’obj B.
Dépendance:
A dépend de B ,pouvant se traduire par une méthode ayant en paramètre un obj de type B.
C'est-à-dire que la relation est très ponctuelle.
1)Une méthode en param l’obj B
2)Une méthode Variable Locale de type B
3)Singleton : Appel DIRECT du code
16
2TUP:
https://docs.google.com/document/d/1mIjR3O0rdv25YJ-2cu9fW_ZNjYWdjx5JYNuSi33vnhM/
edit?usp=sharing
Etude préliminaire :
(A rendre en projet)
Penser à modéliser que les sauvegardes doivent se faire au fur et à mesure des
changements.
Message:
17
2°Fiches de scénario:
Précondition:
Cas nominal:
1)L’agence propose de lancer le jeu
2)Le joueur lance manuellement la simulation
3)L’agence retourne l’état et propose de faire rentrer un client.
4)Joueur fait entrer (cf. aller voir entrer)
5)Fin
Variantes:
2-a)Le joueur ne lance pas la simulation
1)Directe à l’étape 5
4-a)Le joueur entre
1)Le joueur annule l’entré
2)L’agence msg ?? → fin 5)
3°Classes candidates:
Agence, Voiture, Moteur, Client
18
19
Correction Zoo
A)Importation gitlab
Préparation:
20
-On modifie le pom.xml de notre projet:
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
https://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>org.formation.autard</groupId>
<artifactId>correctionzoo</artifactId>
<version>0.0.1-SNAPSHOT</version>
<properties>
<java.version>16</java.version>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<junit.jupiter.version>5.8.2</junit.jupiter.version>
</properties>
<dependencies>
21
<groupId>org.junit.jupiter</groupId>
<artifactId>junit-jupiter-engine</artifactId>
<version>${junit.jupiter.version}</version>
<scope>test</scope>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<artifactId>maven-surefire-plugin</artifactId>
<version>3.0.0-M5</version>
</plugin>
<!-- POur exécuter les TESTS unitaire -->
<plugin>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.8.1</version>
<configuration>
<release>${java.version}</release>
</configuration>
</plugin>
</plugins>
</build>
</project>
Pour connaitre sa version java a mettre dans <java.version>il faut aller dans
windows>preference>java>javaJREBuild
Click droit sur le projet > maven > update project
Click droit sur le projets > run as > run configuration >Junit .Et les passer en junit5 (si
besoin)
4)Copier tout
src et ce que est dans test dans le projet
B)Corrections
On change le chemin des paquets pour qu’ils correspondent au nôtre
Click droit sur le projets > run as > maven install
2)Usine logicielle
22
23
CI(Intégration continu) :
A)Config de gitlab
Gitlab a besoin d'un fichier nommé .gitlab-ci.yml
dans gitlab:
- settings>CI/CD
- CI/CD>editor>Create
- modifier le fichier yml pour que ça fonctionne
Vu qu'on a modifier le yml faut le récupérer pour pouvoir faire des commit.
Dans eclipse :clic droit sur le projet > team>pull
Puis on fait un push head.
24
Settings>CI/CD>Variables
CE(Développement continu):
-Dépôt sur un serveur appli
25
GitLab:
Schématiquement:
Faire un runner:
26