Introduction à la programmation objet

publicité
Introduction à la
Programmation Orientée Objet
Langage Java
SI3 MAM3
Allez voir le cours sur l’ENT http://ent.unice.fr
Catherine Faron Zucker [email protected]
Igor Litovsky [email protected]
Anne-Marie Pinna Dery [email protected]
http://courswiki.polytech.unice.fr/SI3/IPA
A quoi sert la programmation ?
• Passer d’un problème réel à une
résolution informatique
- calculs mathématiques
- gestion de commandes
- Systèmes d’exploitation – facebook...
- jeux
Analyser le problème, concevoir une
solution, l’écrire dans un langage
informatique, l’exécuter sur une machine
Types de programmation
/ langages de programmation
• Programmation Procédurale : Pascal, C,
Fortran
• Programmation Fonctionnelle : Lisp,
Scheme…
• Logique : Prolog
• Objet : C++, Java …
Langages de programmation
/ Environnements de
programmation
• Ecrire un programme, le transformer en
code binaire, l’exécuter, le documenter, le
tester….
• En Java
– Editeur classique : emacs, kwrite et
commandes systèmes
– BlueJ
– Eclipse
Objectifs du cours
• Apprendre les principes de base de la
programmation objet et de l’algorithmique
• Etre capable de comprendre un code
• Etre capable d’écrire un code « propre » :
lisible, maintenable
• Savoir écrire un petit logiciel en Java
Contenu du cours
•
•
•
•
•
•
Introduction aux objets
Algorithmes de base
Structures de données
Listes
Tris de données
Qualité du code
Objets/instances et classes
• Les objets (instances) représentent des entités du monde réel
relatives au problème à traiter
– Une voiture rouge de marque Ferrari
– un carré de taille 4cm de côté
– Un échiquier de 16 cases
• Les classes représentent un ensemble d’objets similaires
Ce sont les modèles des instances
–
–
–
–
Voiture
Carré
Echiquier
Case
• Plusieurs instances peuvent être créées à partir d’une classe
Méthodes et attributs
•
Des opérations peuvent être appliquées à des objets : ce sont les méthodes. On
parle d’invocation de méthode
Les méthodes ont des paramètres afin de passer des données à appliquer.
–
–
–
accélérer (vitesse) maFerrari.accelerer(30);
déplacer(distance)
placer(unPion,uneCase)
•
Les attributs (variables d’instances) sont les données stockées dans les instances
•
La classe définit les méthodes (nom, liste de paramètres, algorithme…)
–
–
–
•
Que fait la méthode accélérer ? (changer la vitesse de la voiture)
Que fait la méthode déplacer ? (changer les coordonnées du carré)
Que fait placer(Pion,Case) ? Vérifier si un Pion peut être placé sur une case et si oui
l’affecter.
La classe définit les attributs qui décrivent une instance; chaque instance ayant sa
valeur propre. On parle de l’état d’un objet
–
–
La couleur,la marque, la vitesse des voitures. Ma Ferrari est rouge et roule à 130
Les coordonnées et la taille d’un côté d’un carré….
Etat du Cercle circle1
Quel est le nom de la classe ?
Quel est le nom de l’instance ?
Quelles sont les variables d’instances ?
Quel est leur type ?
Attention : il y a des conventions de nommage
Instances d’une classe
Comment crée-t-on une instance ?
Comment modifier la valeur d’une variable d’instance de circle1 ?
Comment afficher les positions du circle2 ?
Donner des exemples de méthodes ?
Structure d’une méthode
• Une méthode a une entête et un corps
• L’entête définit la signature d’une
méthode.
public int getXPosition() Nom de la méthode
public void showCoord()
Liste de paramètres
Type de retour
visibilité
• Le corps contient les lignes de code
Structure d’une classe
Nom de la classe
public class Circle
{
// Variables d’instances : diameter, yPosition, xPosition
// Constructeurs : Circle(int x, int y)
// Méthodes : setYPosition(int y); printCoord()
}
Marqueurs du bloc de début et fin de la classe : {}
Variables d’instances
public class Circle
{
private int xPosition;
private int yPosition;
private int diameter;
private String color;
private boolean isVisible;
…….
}
• Visibilité : private, public, protected
– Une variable d’instance est toujours privée a priori
•
Types de données : int, String, boolean, Circle
– Un type est soit un type de base soit une classe Java Standard soit une
classe définie par le programmeur
•
Nom de variable : Attention aux conventions de nommage
– Commence par une miniscule, séparation des mots par une majuscule
Constructeurs : initialisation des
instances
Ils ont le même nom que la classe
Ils stockent les valeurs initiales des attributs le plus souvent grâce aux valeurs des paramètres
public Circle(int x,int y)
{
xPosition = x;
5 instructions d’affectations
yPosition = y;
diameter=5;
color="blue"
isVisible=true;
}
public Circle(int x,int y,String c,int diameter)
{
this(x,y);
xPosition = x;
yPosition = y;
this.diameter=diameter;
color=c;
isVisible=true;
}
•
Il peut y avoir plusieurs constructeurs dans une classe.
•
Il y a un constructeur par défaut sans paramètre
Création d’instances
ATTENTION : les instances n’ont pas de nom en Java
On les affecte à des variables : Voiture maFerrari=new Voiture("Ferrari", "rouge");
Voiture maTititne= new Voiture();
Il est important de définir un constructeur par défaut
Il peut y avoir plusieurs constructeurs ou méthodes de même nom
si le nombre de paramètres diffère
Méthodes accesseurs
Un type de méthode spécifique qui fournit les informations (valeurs des
variables d’instances) d’un objet
public int getXPosition()
{
return xPosition;
}
public String getColor()
{
return color;
}
•
Type de retour : int, String…
– La méthode renvoie une valeur correspondant au type de retour
•
Nom de méthode : getXPosition, getColor
ATTENTION Convention de nommage
•
•
•
Liste de paramètres : vide
– l’information est dans l’instance on n’a pas besoin de données extérieures
Marqueurs du Bloc de début et fin de la méthode : {}
Visibilité : public
– Peut être utilisée à l’extérieur de la classe, dans une autre classe
•
Instruction : instruction return
– Il y a toujours un return quand une méthode renvoie une valeur de retour
– C’est la dernière instruction exécutée
Méthodes accesseurs en
écriture : mutator (anglais)
Méthode spécifique pour changer l’état d’un objet...
– contient une instruction d’affectation : affectation des variables d’instances.
– reçoit des paramètres : valeur à affecter
.
public void setXPosition (int x)
{
xPosition = x;
}
public void setColor(String x)
{
color = x;
}
Type de retour (void) : ne renvoie rien
Nom de méthodes : setXPosition, setColor(String x)
ATTENTION au convention de nommage
Paramètres : int x, String x
Visibilité : public
Instruction : affectation d’une variable d’instances xPosition = x;
Affichage
public void showCoord()
{
System.out.println(" Les coordonnées sont :");
System.out.println(" x : " + xPosition + " y: " + yPosition );
}
Instruction d’écriture
Concaténation de chaines
Méthode prédéfinie pour
l’affichage d’une instance
public String toString()
{
return " x : " + xPosition + " y: " + yPosition + " diamètre: " + diameter
+ " couleur: " + color;
} ….
System.out.println(circle1);
System.out.println(circle1.toString());
Comment tester et exécuter ?
• Pour utiliser la classe Point
– Ecrire une méthode main dans la classe Point
ou une autre UseOfPoint
• création d'instances (constructeurs)
• affichage des instances (toString)
• appel des méthodes modifiant l'état d'une instance
et affichage des instances
• appel et affichage des méthodes renvoyant un
résultat
Exemple de main pour Point
public static void main(String[] argsv)
{ Point origine = new Point(0,0);
Point p=new Point();
System.out.println(origine);
System.out.println("Le point origine : (" + origine.getX() + ", " +
origine.getY());
System.out.println(p);
Point p2=new Point("12", "13");
System.out.println("Le point origine : (" + origine.getX(10) + ", " +
origine.getY(11));
System.out.println(System.out.println("Le point origine : (" +
origine.setX(10) + ", " + origine.setY(11));
}
Les commandes
public static void main(String[] args)
javac ClasseAtester.java
-> erreurs ou
création du fichier ClasseAtester.class
javac TestDEClasseAtester.java
-> erreurs ou
création du fichier TestDeClasseAtester.class
java TestDeClasseAtester
-> erreurs et/ou
exécution du code
ATTENTION A L’ORDRE DE COMPILATION
Des références
• - api :
http://www.j2ee.me/javase/6/docs/api/
Vous aurez une version locale sur votre
ordinateur portable
-Tutorial Java
http://java.sun.com/docs/books/tutorial/
- Pour trouver des informations
http://www.jmdoudoux.fr/java/dej/indexavecfr
ames.htm
Téléchargement