Rappels Java. V.Marangozova-Martin. 1 Classes, instanciation, objets, main



Documents pareils
TP1 : Initiation à Java et Eclipse

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

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

Programmer en JAVA. par Tama

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

as Architecture des Systèmes d Information

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

Initiation à JAVA et à la programmation objet.

INITIATION AU LANGAGE JAVA

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

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

Langage Java. Classe de première SI

Introduction à Java. Matthieu Herrb CNRS-LAAS. Mars

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

Une introduction à Java

Licence Bio Informatique Année Premiers pas. Exercice 1 Hello World parce qu il faut bien commencer par quelque chose...

INTRODUCTION A JAVA. Fichier en langage machine Exécutable

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

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

TP1. Outils Java Eléments de correction

Présentation. Au programme. Fonctionnement. A l issue de ce module vous devriez...

Programmation Objet Java Correction

Premiers Pas en Programmation Objet : les Classes et les Objets

Chapitre VI- La validation de la composition.

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

Remote Method Invocation (RMI)

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

ACTIVITÉ DE PROGRAMMATION

Java c est quoi? Java pourquoi?

TD/TP PAC - Programmation n 3

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

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

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 )

Java Licence Professionnelle CISII,

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

Cours 1: Java et les objets

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

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

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

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

Prénom : Matricule : Sigle et titre du cours Groupe Trimestre INF1101 Algorithmes et structures de données Tous H2004. Loc Jeudi 29/4/2004

F. Barthélemy. 17 mai 2005

RMI le langage Java XII-1 JMF

Programmation Orientée Objet en C#

GOL502 Industries de services

Remote Method Invocation Les classes implémentant Serializable

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

TD/TP PAC - Programmation n 3

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

Auto-évaluation Programmation en Java

Programmation en Java IUT GEII (MC-II1) 1

NFP 121. Java et les Threads. Présentation : Thierry Escalarasse Mai 2007

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

Remote Method Invocation en Java (RMI)

TP1 : Initiation à Java et Eclipse

Java Licence Professionnelle CISII, Cours 2 : Classes et Objets

Utiliser Java sans BlueJ

Projet de programmation (IK3) : TP n 1 Correction

Développement Logiciel

Java Licence professionnelle CISII,

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

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

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

J2SE Threads, 1ère partie Principe Cycle de vie Création Synchronisation

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

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

Cours 1 : La compilation

Programmation par les Objets en Java

IFT287 Exploitation de base de données relationnelles et orientées objet. Laboratoire Mon premier programme Java en Eclipse

Apprendre la Programmation Orientée Objet avec le langage Java (avec exercices pratiques et corrigés)

Création d objet imbriqué sous PowerShell.

Quelques patterns pour la persistance des objets avec DAO DAO. Principe de base. Utilité des DTOs. Le modèle de conception DTO (Data Transfer Object)

Package Java.util Classe générique

Notions fondamentales du langage C# Version 1.0

Lambda! Rémi Forax Univ Paris-Est Marne-la-Vallée

Java 1.5 : principales nouveautés

Page 1 sur 5 TP3. Thèmes du TP : l la classe Object. l Vector<T> l tutorial Interfaces. l Stack<T>

Composants Logiciels. Le modèle de composant de CORBA. Plan

Apprendre Java en 154 minutes

Chapitre 2. Classes et objets

Synchro et Threads Java TM

Java Licence Professionnelle CISII,

Design patterns. Design patterns - définition. Design patterns - avantages

Bases Java - Eclipse / Netbeans

Chapitre I Notions de base et outils de travail

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

Systeme d'exploitation

Java c est quoi? Java. Java. Java : Principe de fonctionnement 31/01/ Vue générale 2 - Mon premier programme 3 - Types de Programme Java

SYNC FRAMEWORK AVEC SQLITE POUR APPLICATIONS WINDOWS STORE (WINRT) ET WINDOWS PHONE 8

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

Programmation Par Objets

Traitement de données

Support de cours et TD Programmation Orientée Objet

Introduction à Eclipse

TD Objets distribués n 3 : Windows XP et Visual Studio.NET. Introduction à.net Remoting

CORBA. (Common Request Broker Architecture)

Projet de Veille Technologique

Java DataBaseConnectivity

Transcription:

Rappels Java V.Marangozova-Martin 1 Classes, instanciation, objets, main Java est un langage pour la programmation orientée-objet (POO). La programmation par objets permet de structurer les programmes non en termes de fichiers, de modules, de fonctions et de procédures, mais en termes de structures (les objets) qui approchent plus les choses du monde réel. Exemple : vous voulez modéliser une voiture, vous allez définir une structure Voiture. La voiture a quatre roues, un volant, quatre portes, deux sièges avant, deux sièges arrière, etc : vous allez définir, à l?intérieur de la structure Voiture d?autres structures pour les différentes parties.. La voiture peut démarrer, s?arrêter, prendre de l?essence, avoir un accident : vous aller définir des actions pour manipuler la structure Voiture. Dans votre programme vous allez vouloir gérer différentes voitures (vous êtes vendeur de voitures), alors il va falloir pouvoir créer et manipuler différentes structures Voiture. Pour faire ceci en Java, nous allons définir une classe Voiture qui va définir la structure générique d?une voiture. Dans cette classe, nous allons définir des attributs pour dire quelles sont les parties d?une voiture. Nous allons également définir des méthodes pour les différentes actions que nous pouvons faire avec une voiture. Ce qui nous donne : class Voiture { //attributs Roue roueavg, roueavd, rouearg, roueard; Volant volant; Siege sieges[4]; String marque; int nbkilometres; int litresessence; String étatvoiture; //méthodes void démarrer() {étatvoiture=?démarré?; 1

Miage3, 2006-2007 2 void arrêter() {étatvoiture=?arrêté?; Le programme principal (celui qui est exécuté lorsqu?on lance le programme Java), est contenu dans une méthode main, définie également dans une classe. Par exemple, si nous avons notre magasin de voitures, nous pouvons définir une classe Magasin comme suit : class Magasin { //attributs Voiture[100] stock; int nbvoitures; //méthodes void recevoirvoiture(int kilometres, int essence, String marque) { nbvoitures++; Voiture nouvelle = new Voiture (kilometres, essence, marque); stock[nbvoitures]=nouvelle; void vendrevoiture(int numero) { for (int i = numero; i < nbvoitures-1; i++) stock[i]=stock[i+1]; nbvoitures--; //programme principal void main() { while true() { System.out.println("Menu principal\n"+ "1 : recevoir Voiture\n" + "2 : vendre Voiture\n"+ ); //création de voiture if (choix==1) {

Miage3, 2006-2007 3 recevoirvoiture(); Dans cette classe Magasin nous voyons que la création de voitures se fait à l?aide d?une opération spéciale : new. Avec cette opération on appelle une méthode spéciale de la classe Voiture : son constructeur. Si on peut dire que la classe Voiture définit un type (qqchose d?abstrait), quand on appelle son constructeur nous créons un objet concret qui peut être manipulé dans le programme. On dit que la classe est instanciée. Le constructeur dans la classe Voiture est défini comme suit : class Voiture { String marque; int nbkilometres; int litresessence; Voiture (int k, int e, String m) { marque = m; nbkilometres = k; litresessence=e; 2 Compilation et exécution Compilation Pour compiler notre programme Java, il faut exécuter la commande suivante. javac Voiture.java Magasin.java Exécution Pour exécuter : java Magasin //la classe qui contient le main Définition de classpath : On peut compiler les classes Java séparemment. Dans ce cas, il faut indiquer au compilateur où il peut trouver les classes référencées dans les classes à compiler. Pour cela, on utilise le classpath. Par

Miage3, 2006-2007 4 exemple : javac Voiture.java //crée Voiture.class ds répértoire courant javac -classpath. Magasin.java Répertoire destination pour classes compilées. Pour créer les classes non dans le répertoire courant mais dans un répértoire destination : javac -d dest Voiture.java //crée Voiture.class ds dest javac -classpath dest Magasin.java //compile Magasin en utilisant la classe compilée dans dest La compilation d une classe Java ne génère pas de langage machine (compréhensible par le processeur de la machine sur laquelle on travaille) mais crée un format intermédiare qui est interprête avant d?être exécuté sur le processeur. L?interprétation est faite par la machine virtuelle Java. L?avantage est que tout programme Java peut être exécuté sur toutes les machines où est installée la machine virtuelle (portabilité et indépendance du matériel). Toutefois, si un nouveau matériel doit être pris en compte, la machine virtuelle doit être réécrite. 3 Compléments 3.1 Héritage Imaginons que le magasin ne vend pas uniquement des voitures, mais également des camions. Dans ce cas on voudrait avoir une entité générique Vehicule (on aura toujours quatre roues, une marque, avoir les mêmes actions). Par contre pour les voitures on voudrait spécifier PermisB, alors que pour les camions PermisC. class Vehicule { Roue Volant int nbkilometres; int litresessence String marque void démarrer() void arrêter()

Miage3, 2006-2007 5 class Voiture extends Vehicule { String permis; Voiture() { super(); permis=?b?; class Camion extends Vehicule { String permis; Voiture() { super(); permis=?c?; La class Voiture hérite de Vehicule, ce qui veut dire qu?elle dispose des attributs et des méthodes définis dans Vehicule (réutilisation de code). 3.2 Accès aux attributs et aux méthodes Specifier Class Package Subclass World private Y N N N no specifier Y Y N N protected Y Y Y N public Y Y Y Y static Pouvoir utiliser des méthodes et des valeurs sans créer des objets, caractérisent les classes. public class Calcul { //calcul de la moyenne de valeurs entières public static double moyenne(int[] valeurs) { int sum = 0; // sommeéléments for (int i=0; i<p.length; i++) { sum += p[i]; return ((double)sum) / p.length;

Miage3, 2006-2007 6 public class MonCalcul { public static void main() { int [] vals = {3,4,15,20; System.out.println(Calcul.moyenne(vals)); Interfaces Mêmes fonctions, différentes implémentations. interface SommeProduit{ int somme(); int produit(); class Doublet implements SommeProduit{ int a, b; public int somme(){return a + b; public int produit(){return a * b; class Triplet implements SommeProduit{ int a, b, c; public int somme(){return a + b +c; public int produit(){return a * b *c;