Une classe est une sorte de type de données définie par le programmeur Variables peuvent être de type classe



Documents pareils
Structure d un programme et Compilation Notions de classe et d objet Syntaxe

Programmer en JAVA. par Tama

Cours 1: Java et les objets

Pour signifier qu'une classe fille hérite d'une classe mère, on utilise le mot clé extends class fille extends mère

Polycopié Cours Programmation Orientée Objet sous Java Programme : Filière SMI S5

as Architecture des Systèmes d Information

Une introduction à Java

Java Licence Professionnelle CISII, Cours 2 : Classes et Objets

JAVA TD0. Prise en main du langage Environnement de base JAVA 1

Package Java.util Classe générique

Encapsulation. L'encapsulation consiste à rendre les membres d'un objet plus ou moins visibles pour les autres objets.

Java Licence Professionnelle CISII,

ALGORITHMIQUE ET PROGRAMMATION ORIENTEE OBJET

Cours intensif Java. 1er cours: de C à Java. Enrica DUCHI LIAFA, Paris 7. Septembre Enrica.Duchi@liafa.jussieu.fr

Introduction à Java. Matthieu Herrb CNRS-LAAS. Mars

Java c est quoi? Java pourquoi?

Aide mémoire UML & Java 1ère partie : Introduction. marc.lemaire@u-cergy.fr

Info0101 Intro. à l'algorithmique et à la programmation. Cours 3. Le langage Java

Héritage presque multiple en Java (1/2)

Cours 1 : Introduction. Langages objets. but du module. contrôle des connaissances. Pourquoi Java? présentation du module. Présentation de Java

Tp 1 correction. Structures de données (IF2)

Initiation à JAVA et à la programmation objet.

Généralités sur le Langage Java et éléments syntaxiques.

INF 321 : mémento de la syntaxe de Java

Chapitre 2. Classes et objets

PROGRAMMATION PAR OBJETS

Chapitre 10. Les interfaces Comparable et Comparator 1

2 e édition JAVA 5 et 6. Jérôme Bougeault. TSoft et Groupe Eyrolles, 2003, 2008, ISBN :

Programmation par les Objets en Java

Programmation en Java IUT GEII (MC-II1) 1

TP n 2 Concepts de la programmation Objets Master 1 mention IL, semestre 2 Le type Abstrait Pile

INITIATION AU LANGAGE JAVA

Plan du cours. Historique du langage Nouveautés de Java 7

Java Licence Professionnelle Cours 7 : Classes et méthodes abstraites

Premiers Pas en Programmation Objet : les Classes et les Objets

Langage et Concepts de Programmation Objet. 1 Attributs et Méthodes d instance ou de classe. Travaux Dirigés no2

Auto-évaluation Programmation en Java

LMI 2. Programmation Orientée Objet POO - Cours 9. Said Jabbour. jabbour@cril.univ-artois.fr

Programmation avec des objets : Cours 7. Menu du jour

Java Licence professionnelle CISII,

Langage Java. Classe de première SI

Programmation Orientée Objet application au langage Java Version Novembre 2007

Langage et Concepts de ProgrammationOrientée-Objet 1 / 40

Programmation Orientée Objet Java

1 Définition d une classe en Java

Utilisation d objets : String et ArrayList

Un ordonnanceur stupide

Introduction au langage Java

Polymorphisme, la classe Object, les package et la visibilité en Java... 1

TD3: tableaux avancées, première classe et chaînes

P r ob lé m a t iq u e d e la g é n é r icit é. Pr in cip e d e la g é n é r icit é e n Ja v a ( 1 /3 )

Objets et Programmation. origine des langages orientés-objet

Chapitre V. Les classes : Object, Vector, etc.

Programmation Objet Java Correction

Valeur C - RSM Conception d Applications Multimedia. Objectifs du cours: 1. Java en général

1. Langage de programmation Java

RAPPELS SUR LES METHODES HERITEES DE LA CLASSE RACINE Object ET LEUR SPECIALISATION (i.e. REDEFINITION)

TP1 : Initiation à Java et Eclipse

Support de cours et TD Programmation Orientée Objet

La technologie Java Card TM

4. Groupement d objets

TP, première séquence d exercices.

Solutions du chapitre 4

JAVA. Introduction à la programmation objet avec java 1/4. Nadir BOUSSOUKAIA

INTRODUCTION A JAVA. Fichier en langage machine Exécutable

Génie Logiciel avec Ada. 4 février 2013

Exceptions. 1 Entrées/sorties. Objectif. Manipuler les exceptions ;

Introduction au langage de programmation Java

Initiation à la programmation orientée-objet avec le langage Java

Facultés Universitaires Notre-Dame de la Paix. Conception et Programmation Orientées- Object

Java 1.5 : principales nouveautés

Java Licence Professionnelle CISII,

La carte à puce. Jean-Philippe Babau

TD/TP PAC - Programmation n 3

Environnements de développement (intégrés)

Java - la plateforme

Programmation Orientée Objets Le Langage JAVA

TD/TP PAC - Programmation n 3

Introduction. Introduction au langage Java. Un livre de Wikilivres.

JADE : Java Agent DEvelopment framework. Laboratoire IBISC & Départ. GEII Université & IUT d Evry nadia.abchiche@ibisc.univ-evry.

Synchro et Threads Java TM

1. Structure d un programme C. 2. Commentaire: /*..texte */ On utilise aussi le commentaire du C++ qui est valable pour C: 3.

Programmation Orientée Objet

ACTIVITÉ DE PROGRAMMATION

Flux de données Lecture/Ecriture Fichiers

COMPARAISONDESLANGAGESC, C++, JAVA ET

Programmation avec le langage Java

Prendre le marteau, le tableau, le mètre, le crayon, la ficelle, le clou, la pointe ;

Cours d initiation à la programmation en C++ Johann Cuenin

Info0604 Programmation multi-threadée. Cours 5. Programmation multi-threadée en Java

C++ Programmer. en langage. 8 e édition. Avec une intro aux design patterns et une annexe sur la norme C++11. Claude Delannoy

Apprendre Java en 154 minutes

Classe Interne, Anonyme & Enumération

Cours 14 Les fichiers

Exercices sur les interfaces

2. Comprendre les définitions de classes

Corrigé des exercices sur les références

Généralités. javadoc. Format des commentaires. Format des commentaires. Caractères spéciaux. Insérer du code

Programmation Par Objets et Langage Java

Développement Logiciel

Transcription:

Classe, Objet Variables locales Niveaux de visibilité (Encapsulation) Attributs et Méthodes Statiques Surcharge des Méthodes Transmission des Paramètres Paquetage Classes pour les types de base POO 1

Une classe est une sorte de type de données définie par le programmeur Variables peuvent être de type classe Objet est la valeur d une variable de type classe; il est une instanciation de la classe Classe définit les types de données qu un objet peut contenir et les actions qu ils peuvent entreprendre ClasseNom classevar; classevar =new ClasseNom(); ClasseNom classevar=new ClasseNom(); POO 2

La durée de vie d un objet La déclaration et l instanciation de l objet (new) L utilisation de l objet en appelant ses méthodes La suppression de l objet : elle est automatique en Java, la mémoire inutilisée est prise en charge par le récupérateur de mémoire (garbage collector) Objets identiques MaClasse m1 = new MaClasse(); MaClasse m2 = m1; m1 et m2 pointent sur le même objet POO 3

Egalité de deux références : == Compare si 2 références pointent vers le même objet Différence de deux références :!= Compare si 2 références pointent vers des objets différents Type d instance de la référence : instanceof Permet de savoir si l objet référencé est une instance d une classe donnée ou d une de ses sous-classes Personne moi = new Personne(); if (moi instanceof Personne) { System.out.println("Je suis bien une personne! "); POO 4

Ramasse Miette - Récupérateur de mémoire (Garbage collector) Il prend en charge la gestion de la mémoire Il alloue l espace mémoire lors de la création des objets Il libère la mémoire occupée par un objet dès qu il n y a plus aucune référence qui pointe vers cet objet Il est capable de compacter la mémoire pour éviter la fragmentation POO 5

null La valeur «null» peut être assignée à n importe quelle référence sur un objet Une méthode peut retourner «null» L appel d une méthode sur une référence (adresse) d objet valant«null» provoque une erreur d exécution (NullPointerException) On peut tester une référence pour savoir si elle vaut «null» Personne moi = new Personne(); if (moi!= null) { System.out.println("J existe toujours! "); POO 6

class ClasseNom{ public String var1; public int var2;... public void mamethode() {... Référencer la variable en dehors de la classe objetnom.var1 objetnom.var2 Invoquer la méthode en dehors de la classe [returntype =]objetnom.mamethode(); La classe doit être définie dans un fichier dont le nom est le même que la classe suivie de.java POO 7

Un programme java est une classe qui contient la méthode main L exécution du programme java consiste à invoquer la méthode main public static void main(string[] args) Une méthode qui retourne une valeur doit contenir au moins une return Expression Invoquer une méthode qui retourne une valeur typeret tretvar; tretvar = objetnom.methodenom(); Invoquer une méthode void objetnom.methodenom(); Il est possible d invoquer une méthode qui retourne une valeur pour effectuer une action objetnom.methodenom(); POO 8

Une variable définie dans une méthode est locale toutes variables de main sont locales toutes variables de méthodes sont locales 2 méthodes peuvent avoir des variables locales de même nom Il n y a pas de variables globales dans Java Une variable définie dans un bloc ({ ) est locale dans le bloc Une variable définie dans une boucle for est locale dans cette boucle Les paramètres d une méthode sont considérés comme des variables locales de cette méthode Les variables d un objet sont initialisés automatiquement boolean=false, les types primitifs =0, types classe= null Les variables locales ne sont pas automatiquement initialisées POO 9

Modificateurs public, private public : pas de restriction d accès pour des méthodes ou des variables private : seulement accessibles à l intérieure de la classe Un bon programmeur doit définir chaque chaque attribut (variable) d instance comme private Méthodes sont en générales public (possibilité de les invoquer en dehors de la classe) Méthodes sont private si elles sont utilisées à l intérieure des autres méthodes de la classe POO 10

Méthodes pour accéder ou modifier les valeurs des attributs privés des objets : (accesseurs) class MaClasse { private int x; public Maclasse(int a){ x=a;... public int get() {return x; public void set (int a) {x=a; class AutreClasse{... MaClasse y=new MaClasse(); int a=y.get(); y.set(5); POO 11

Certains attributs peuvent être communs à tous les objets de la classe et exister indépendamment à tout objet de la classe. on les déclare static on les appelle attributs de classe ou attributs statiques une seule copie de ce champ quelque soit le nombre d objets tous les objets de classe peuvent lire et changer on référence directement dans la classe, mais en dehors il faut préciser la classe class Exemple { static int n=0; public void aff(){system.out.println(n);... Exemple.n POO 12

Constantes: public static final int BIRTH_YEAR = 1954; int year=maclasse.birth_year; Classe Math contient des méthodes mathématiques et constantes standards Elle est définie dans java.lang package (importé par défaut) Math.PI, Math.E public static double sqrt (double arg) Math.sqrt(4) public static long round (double arg) public static int abs(int arg) public static float abs(float arg) POO 13

Méthodes statiques sont invoquées sur une classe indépendamment d une initiation de la classe. déclarées à l intérieur de classe (static) class MaClasse{ public static typeret mameth(parameters) {...... invoquées avec le nom de la classe valret = MaClasse.maMeth(arguments); une méthode statique ne doit pas accéder à un attribut d instance (variable d un objet) peut accéder à une variable statique Il est possible d ajouter la méthode main dans une classe quelconque POO 14

class MathUtil { public final static double constpi = 3.14 ; public static double pi() { return constpi; public static double carre(double x) { return x * x; public static double demi(double x) { return x / 2; double i = MathUtil.carre(5); double x = MathUtil.pi(); POO 15

class Point { private static int origine; //abscisse absolu de l origine private int x; //abscisse absolu du point public Point (int xx) { x=xx; public void affiche () { System.out.print("abscisse ="+(x-origine)); System.out.println(" relative a l origine="+origine); public static void setorigine(int o) {origine=o; public static int getorigine(int o) {return origine; public class TstOrig { public static void main(string[] args) {Point a=new Point(10); a.affiche(); Point.setorigine(3); a.affiche(); POO 16

La méthode max retourne le point le plus éloigné de l origine avec une méthode static: public static Point max (Point a, Point b) {if (Math.abs (a.x - origine) > Math.abs ( b.x - origine) return a; else return b; appel Point p1=new Point(4); Point p2= new Point(9); Point. setorigine(5); Point p= Point.max(p1,p2); p.affiche(); POO 17

avec une méthode usuelle: public Point max (Point a) {if (Math.abs ( this.x - origine) > Math.abs ( a.x - origine) return this; else return a; appel Point p1=new Point(4); Point p2= new Point(9); Point. setorigine(5); Point p= p1.max(p2); p.affiche(); POO 18

Des méthodes dites surchargées, si elles portent le même nom et que leurs paramètres sont de type différents, et/ou que le nombre de paramètres est différent. Il n est pas possible d avoir différents types pour la valeur retournée public Personne(String n, int a) { nom=n; annee_n=a; salaire=1200; //méthode constructeur public Personne(Personne p) { nom=p.nom; annee_n=p.annee_n; salaire=p.salaire; //méthode constructeur POO 19

public Personne(String n, int a, int s) { nom=n; annee_n=a; salaire=s; //méthode constructeur public void affiche() { System.out.println(nom+" " + annee_n+" "+salaire); public void affiche(string tt) { System.out.println(tt +" " + nom+" "+ annee_n+" "+salaire); POO 20

public class Person1 { public static void main(string args[]) { Personne p1= new Personne("dupont ",1961,1700); Personne p2= new Personne("bernard",1981); Personne p3= new Personne(p1); p1.affiche(); p2.affiche(); p3.affiche(" duplicata " ); p1.calcul_age(); p2.calcul_age(); p1.calcul_age(); POO 21

this «this» = référence sur l objet courant Représente l instance courante en train de s exécuter class Compte { public void crediter(float montant) { ; public void debit(float montant) { ; class Versement { public void valider() { public void effectuer(compte s, Compte d, float montant) { s.debiter(montant); d.crediter(montant); this.valider(); POO 22

Transmission des paramètres Les paramètres des méthodes sont passés par valeur Lorsque le paramètre est un objet c est la référence d objet qui est passé mais pas l objet lui-même. On peut modifier l objet dans la méthode càd modifier les valeurs de ses attributs (variables) On ne peut pas modifier la référence d objet POO 23

import java.io.*; class Maclasse { private int x; public Maclasse(int xx) {x=xx; public int getx (){ return x; public void putx (int a){x=a; class Operations {public static void ajout(int n, int p) {n=n+p; public static void ajout(maclasse c, int p) {c.putx(c.getx()+p); public static void ajout(maclasse c){c.putx(c.getx()+5); c=null; public class TstTrans { public static void main(string[] args) { Maclasse a=new Maclasse(2); int n=2; System.out.println("valeur d'objet avant "+a.getx()); Operations.ajout(a,5); System.out.println("valeur d'objet apres "+a.getx()); Operations.ajout(a); System.out.println("valeur d'objet apres "+a.getx()); System.out.println("valeur de n avant "+n); Operations.ajout(n,5); POO 24 System.out.println("valeur d'objet apres "+n);

Un paquetage est une collection de classes et d interfaces Préciser en première ligne du fichier package nom_du_paquetage; Le nom du paquetage est séparé par des points -si la classe Maclasse est dans le paquetage p1.p2 dans le fichier source: package p1.p2; le chemin d accès: p1/p2/maclasse.class -si on veut importer dans un autre fichier source import p1.p2.maclasse import p1.p2.* (toutes les classes du paquetage) javac -d dir_dest program.java (*.class sont dans dir_dest/p1/p2) java -classpath dir_path p1.p2.program (peu importe le catalogue courant) POO 25

En l absence d instruction package les classes appartiennent au paquetage par défaut (catalogue courant) NIVEAUX de VISIBILITE (Encapsulation) 4 types d accès à un attribut ou à une méthode public : (public) par tous les objets private : (privé) depuis sa propre classe protected (protégé) par ceux du paquetage et de ses sous-classes (dans les autres paquetages) une. «rien» (par défaut) par ceux du paquetage POO 26

Classes pour les types de base (Wrapped class) Pour les types byte, short, long, float, double, char les classes équivalentes sont Byte, Short, Long, Float, Double, Character Integer intobjet = new Integer(42); l objet intobjet a un attribut où il y a une copie de la variable de base POO 27

Méthodes pour convertir un objet à un type primitif (type de base) (unboxing) Byte, Short, Integer, Long, Float, Double, Character bytevalue, shortvalue, intvalue, longvalue, floatvalue, doublevalue, charvalue int i = intobjet.intvalue(); Automatique Boxing and Unboxing à partir de Java 5 Integer intobjet = 42; int i = intobjet; POO 28

les constantes Integer.MAX_VALUE, Integer.MIN_VALUE, Double.MAX_VALUE, Double.MIN_VALUE convertir des String à des variables de base Integer.parseInt (int) Long.parseLong, (long) Float.parseFloat, (float) Double.parseDouble (double) String xx="12"; int y=(integer.parseint(xx)+2); System.out.println(y); affichera 14 POO 29