UML - Programmation orient object POO
Si on demande de simuler un cours au niveau de l'abstraction , on sait ce que c'est donc la programmation va être simplifiée.
Le niveau de réutilisabilité va être plus facile.
Sureté : en programmation objet c'est plus simple de restreindre les personne qui ont accès à certaines variables (pas trop possible en c ou du moins plus difficile à mettre en œuvre).
Les données sont encapsulées dans le noyau , encapsulées dans les méthodes java , un utilisateur est obligé de passer par les méthodes pour avoir accès aux données.
Pas de possibilité d'avoir accès directement aux données.
Les objets ont :
- Identité
- Etat : des données
- Comportements : méthodes / actions
Classes:
Définition d'un ensemble d'entités ayant les mêmes caractéristiques (c’est un type riche).
L'objet d'une classe est une instance d'une classe (ou occurrence).
Voir exercice
Constructeur méthode pour construire une Personne
public Personne(){
}
Nouvelle classe PersonneTest
public class PersonneTest {
public static void main(String[] args) {
// TODO Auto-generated method stub
Personne P1 = new Personne ();
}
}
public class PersonneTest {
public static void main(String[] args) {
// TODO Auto-generated method stub
Personne p1 = new Personne ();
System.out.println(p1.nom + " " + p1.age);
System.out.println(p1.direBonjour());
p1.age = 39;
p1.nom = "karine";
System.out.println(p1.nom + " " + p1.age + " ans");
}
}
Dans cet exemple la possibilité de pler age et noms à cet endroit n'est pas très conforme à la sécurité.
Destructeur c’est un « ramasse miette » dès que p1 ne pointe sur rien on récupère l'espace mémoire pour un autre objet.
Pour connaître la propriété couleur du vélo, il faut passer par la méthode « donne-moi la couleur du vélo »
voir Acces slide 17
public class Personne {
private String nom ;
private int age;
public Personne(){
}
public String direBonjour(){
return "Bonjour";
}
public String getNom(){
return nom ;
}
public int getAge(){
return age;
}
public void setAge(int nouveauAge){
age =nouveauAge ;
}
public void setNom(String nouveauNom){
nom =nouveauNom ;
}
}
Tout le monde peut avoir accès à getNom/getAge mais nom age sont privés
public class PersonneTest {
public static void main(String[] args) {
// TODO Auto-generated method stub
Personne p1 = new Personne ();
System.out.println(p1.getNom()+ " " + p1.getAge());
// Ligne au dessus sert à dire qu'a ce moment l'age et nom n'est pas instancié//
System.out.println(p1.direBonjour());
p1.setAge(39);
p1.setNom("karine") ;
System.out.println(p1.getNom() + " " + p1.getAge() + " ans");
}
}
This c'est la personne du noyau
HERITAGE
Une classe peut profiter des caractéristiques d'une autre classe!
Jusqu'à présent on avait à faire à des classes concrètes, des classes que l'on peut instancier.
Classes abstraites : non instanciées (flou)
Relève de l'organisation
Pour qu'une classe devienne concrète, il faut qu'elle implémente toutes les méthodes des classes abstraites dont elle hérite.
A Class abstraite de niveau le plus haut : Méthode S1();
B Class abstraite qui hérite de A : Méthode S2();
C Class concrète qui hérite de B pour que la class C soit concrète, elle doit implémenter S1(); et S2();
Un méta modèle : modèle qui permet de définir des modèles.
Logiciel qui modélise des modèles
UML Plus riche que le modèle Entités/Associations
Processus développement : slide 29
MVC : Les données sont stocker de façon indépendante.
Voir java spring et
java strocke
Pour réaliser le modèle MVC avec java
Diagramme de Class
UML : solution gratuite par contre le reverse ingeniering est souvent payant ! (créer un diagramme d'après du code)
Tous les diagrammes reposent sur le diagramme de classe
Pour voir si il y a une relation d'héritage, il convient de se poser la question : EST UN
Un VTT est un vélo --> c'est bon
Un velo est une personne NON ! Une personne conduit un vélo.
Au début on a tendance a attribuer des relations d'héritage lorsqu'il y a simplement une relation entre deux classes.
Poséidon plug in pour eclipse