Introduction à la programmation objet

publicité
Introduction à la
Programmation Orientée Objet
Langage Java
SI3 MAM3
Allez voir le cours sur
http://anubis.polytech.unice.fr/cours/
Catherine Faron Zucker [email protected]
Claudia C. Gutierrez [email protected]
Igor Litovsky [email protected]
Anne-Marie Pinna Dery [email protected]
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
– Editeurs classiques : emacs, kwrite... et +
commandes systèmes
– Environnements de programmationn :
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 (course)
– un carré de taille 4cm de côté (dessin)
– Un échiquier de 16 cases (jeu)
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
Comment définiriez-vous un étudiant ? Un cours ?
Quelle est la différence entre le cours d’IPA et de Système ?
Avez vous d’autres exemples de classes et d’instances ?
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 (int vitesse) maFerrari.accelerer(30);
déplacer(int distance) leCarre.déplacer(10);
placer(Pion unPion,Case uneCase)
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.
Les attributs (variables d’instances) sont les données stockées dans les instances
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 à respecter
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 (visibilité, type de retour,
nom, paramètres) d’une méthode
Le corps contient les lignes de code, l’algorithme qui
effectue l’action – code exécuté par la machine
Nom
public int getXPosition()
Liste de paramètres
Type de retour
Visibilité
public void déplacer(int x)
Signature
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 : {}
// commentaires – non exécuté par la machine
Variables d’instances
public class Circle
{
private int xPosition=0;
private int yPosition;
private int diameter;
private String color;
private boolean isVisible;
…….
}
Une variable d’instances est définie
par sa visibilité, son type, son nom et
une éventuelle valeur par défaut;
Visibilité : private, public, protected
– Une variable d’instance est toujours privée a priori
Type de données : un type de base, une classe Java Standard ou une classe
définie par le programmeur
int, boolean..., String, ..., Circle
Nom de variable
Attention aux conventions de nommage
Commence par une miniscule, séparation des mots par une majuscule
Les valeurs par défaut sont données dans les constructeurs
Ne pas utiliser a priori l’affectation à la définition
Constructeurs : initialisation des
instances
Les constructeurs permettent de construire les instances d’une classe, d’initialiser les
variables d’instances
le nom du constructeur est le même nom que la classe
les valeurs des paramètres sont utilisées pour l’initialisation
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)
{
xPosition = x;
this(x,y);
yPosition = y;
this.diameter=diameter;
color=c;
isVisible=true;
}
this () permet d’appeler des constructeurs en cascade
this. -> permet designer la variable d’instances
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 faut toujours définir un constructeur par défaut
Il peut y avoir plusieurs constructeurs ou méthodes de même nom
si la liste des paramètres (nombre, type) diffère
Méthodes accesseurs
Les accesseurs sont 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)
Un mutator est une 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 xPosition = x;
Deux types de méthode
Il y a deux sortes de méthodes :
les méthodes procédures (type de retour égale void)
qui ne renvoyent pas de valeur
et
les méthodes fonctions (type de retour différent de void)
qui renvoient un résultat
Ex : Les accesseurs sont des fonctions,
Les mutators sont des procédures
Invocation de méthode
Invoquer une méthode sur une instance :
exécuter les instructions écrites dans le corps d’une
méthode avec les paramètres effectifs
L’opérateur est le .
Ex: circle1.setXPosition(10);
10 est un paramêtre effectif de type entier (int)
1. Comme circle1 est une instance de Circle, l’invocation n’est possible que
si une procédure publique de nom setXPosition avec un paramètre
formel de type compatible int est déclarée dans Circle
2. L’exécution du code est faite en remplaçant le nom du parametre par sa valeur
effective
Affichage
Il existe une méthode prédéfinie que l’on doit redéfinir dans les classes
que l’on écrit pour pouvoir afficher les instances d’une classe
Il s’agit de la méthode de nom toString
public String toString()
{
return " x : " + xPosition + " y: " + yPosition + " diamètre: " + diameter
+ " couleur: " + color;
} ….
System.out.println(circle1);
System.out.println(circle1.toString());
L’instruction correspondant à la méthode prédéfinie System.out.println,
permet d’écrire une chaîne de caractères dans la console
L’instruction + entre deux chaines permet la concaténation des chaînes,
entre deux entiers l’addition de ces entiers
Comment tester une classe?
On peut tester une ou plusieurs classes en écrivant le corps
d’une méthode prédéfinie de nom main
Pour utiliser la classe Circle:
– Ecrire une méthode main dans la classe Point ou dans
une autre classe UseOfPoint qui
• crée des instances (appel aux constructeurs)
• affiche des instances (appel au toString)
• Exécute les méthodes procédurales (appel des méthodes
modifiant l'état d'une instance et affichage des instances)
• Exécute les méthodes fonction (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
Compilation : javac
La compilation génère à partir du code java un binaire que la machine
saura exécuter
La compilation vérifie les erreurs de syntaxe java
Exécution : java
L’exécution exécute un binaire
Les erreurs de programmation peuvent entrainer des erreurs d’exécution
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
Des références
- api :
http://download.oracle.com/javase/6/docs/api/
Vous aurez une version locale sur votre ordinateur
portable
-Tutorial Java
http://download.oracle.com/javase/tutorial/
- Pour trouver des informations
http://www.jmdoudoux.fr/java/dej/indexavecframes.
htm
Téléchargement