Révision des notions OO et Java Semaine 1 Jian-Yun Nie.

Slides:



Advertisements
Présentations similaires
Premier programme en C :
Advertisements

Programmation Orienté Objet en C++
Algorithmes et structures de données avancées Partie Conception de Sites Web dynamiques Cours 9 Patrick Reuter.
SI3 MAM3 Hydro Nathan Cohen Igor Litovsky Christophe Papazian
Introduction à la Programmation Orientée Objet Retour sur les principaux concepts SI3 MAM3 Hydro Nathan Cohen
Calculs de complexité d'algorithmes
GEF 243B Programmation informatique appliquée Expressions de type mixte et blocs §
1 UMLV 1. Introduction 2. Hachage ouvert 3. Hachage fermé 4. Implémentation des fonctions Méthodes de hachage.
Approfondissement du langage
L’ interruption de boucle
IJA - TD 2 Bases du langage
Les attributions de valeur (le signe =). Dans cette présentation, nous allons tenter de représenter ce qui se passe dans la mémoire de lordinateur quand.
Introduction à la programmation (420-PK2-SL) cours 15 Gestion des applications Technologie de linformation (LEA.BW)
Algorithme et programmation
Points importants de la semaine Les commentaires. Les variables. Les instructions conditionnelles. Les instructions itératives (les boucles).
Langage C Révision.
44 Contrôle du déroulement du programme. 4-2 Objectifs A la fin de ce cours, vous serez capables de : Utiliser les constructions de prise de décision.
Langage Oriente Objet Cours 4.
Master 1 SIGLIS java Lecteur Stéphane Tallard Chapitre 4 – Structures de contrôle.
IFT1025, Programmation 2 Jian-Yun Nie
77 Utilisation des classes (suite). 7-2 Objectifs A la fin de ce cours, vous serez capables de : Définir des méthodes surchargées dans une classe Fournir.
Introduction à la programmation (Java)
Langage Oriente Objet Cours 2.
Master 1 SIGLIS Java Lecteur Stéphane Tallard Chapitre 5 – Héritage, Interfaces et Listes génériques.
Les pointeurs Enormément utilisé en C/C++ ! Pourquoi? A quoi ça sert?
Programmation 2: IFT1025 Jian-Yun Nie H 2009.
Une nouvelle structure de données : les tableaux
Principes de programmation (suite)
Principes de programmation
Contrôle de types Les types en programmation Expressions de types Un contrôleur de types Equivalence de types Conversions de types Généricité.
IFT 6800 Atelier en Technologies d’information
1 IFT 6800 Atelier en Technologies dinformation Le langage de programmation Java chapitre 3 : Classes et Objects.
LIFI-Java 2004 Séance du Jeudi 9 sept. Cours 1. La notion de langage Décrire une tâche à effectuer –programme Écrire à un haut niveau –facile pour lutilisateur.
COURS DE PROGRAMMATION ORIENTEE OBJET :
COURS DE PROGRAMMATION ORIENTEE OBJET :
CSI 1502 Principes fondamentaux de conception de logiciels
CSI1502 Principes fondamentaux en conception des logiciels
CSI 1502 Principes fondamentaux de conception de logiciels
ECP – Option SA Henri Fallon

99 Réutilisation du code grâce à l'héritage. 9-2 Objectifs À la fin de ce cours, vous serez capables de : Définir l'héritage Utiliser l'héritage pour.
Programmation Orienté Objet en C++ Ricard julien.
Récursion IFT1025: Programmation 2 Jian-Yun Nie. Définition Le fait pour un programme ou une méthode de s'appeler lui-même. Par exemple –Définir la notion.
Procédures et fonctions
Les Opérateurs Ils régissent toutes les opérations ou transformations sur les valeurs des variables. Opérateur d'affectation Opérateurs arithmétiques Opérateurs.
L’essentiel du langage C
Animateur : Med HAIJOUBI
1 Fichers Binaires, Accès Direct et Objets. 2 Données binaires. Il s'agit ici de lire et écrire des données binaires par opposition à du texte. Pour ce.
LIFI-Java 2004 Séance du Mercredi 22 sept. Cours 3.
3 Les instructions. Cours 32 Plan du cours 3 Instruction Bloc Portée L’alternative Affectations =, +=, *=… Comment comparer –Comparer des réels –Comparer.
Cours No8 La programmation à l’aide d’objets. Contenu 1. Terminologie objet 2. Classe vs Objet 3. Création d’une classe 4. Déclaration d’une variable.
1 Structures des données. 2  Le tableau permettait de désigner sous un seul nom un ensemble de valeurs de même type, chacune d'entre elles étant repérée.
Master 1 SIGLIS Java Lecteur Stéphane Tallard Les erreurs communes en Java.
Master 1 SIGLIS Java Lecteur Stéphane Tallard Chapitre 1 – Objets et Classes Master 1 SIGLIS1Java Lecteur - Chapitre 1 Objets et classes.
Master 1 SIGLIS Java Lecteur Stéphane Tallard Correction du TD Chapitre 4.
Strings et Tableaux en Java
Les classes et les objets Les données finales class A { … private final int n = 20 ; // la valeur de n est définie dans sa déclaration … } class A { public.
C# de plus près.  Ce sont globalement les mêmes que Java : ◦ Int(int16, int32), float, double, bool,…  Les classe « communes » sont également les mêmes.
Cours LCS N°4 Présenté par Mr: LALLALI
IUT du Limousin L.U.P Michel Vergnaud Programmation Objet - Java.
1 PHP 5 Notions fondamentales (niveau 1 – cours #2) Formation continue – Cégep de Sainte-Foy.
LIFI-Java 2004 Séance du Mercredi 29 sept. Cours 4.
Introduction à la programmation objet avec java
pour les programmeurs en C++ Java 2 Part 1 3 Histoire de Java Projet de connexion des machines: 1991 Le nom Java a été introduit dans un café Développé.
Conception de Programmes - IUT de Paris - 1ère année Les classes Introduction Déclaration d’une classe Utilisation d’une classe Définition des.
Philippe Gandy – 17 novembre 2015 Basé sur les notes de cours de Daniel Morin et Roch Leclerc.
LES CLASSES ET LES OBJETS
1 Programmation en C++ C++ de base ● Programme C++ ● Variables, objets, types ● Types et opérations fondamentales ● Tests ● Boucles ● Pointeurs, références.
Notions de base de programmation et Objets
Programmation en C++ C++ de base
Transcription de la présentation:

Révision des notions OO et Java Semaine 1 Jian-Yun Nie

Notions de base Chaque Variable, Constante (valeur) est typée Types de bases: –int, byte, float, boolean, etc. –String, … Casting entre types compatibles double balance = 13.75; int dollars = balance; // Error int dollars = (int) balance; // OK long rounded = Math.round(balance); // >14

Comprendre comment ça fonctionne int a; a = 10; int b = a; a++; 0 int:a 10 int:a 10 int:a 10 int:b 11 int:a 10 int:b

Classe comme type (plus de détails plus tard) Type objet défini par le programmeur –Définir une classe (type) –Référence de ce type –E.g. public class Circle {…} Circle soleil; Rectangle box; soleil = new Circle(); //Correct box = soleil; // Erreur box = new Circle(); //Erreur

Contrôle du programme if condition then statement else statement ; while condition statement ; do statement while (condition); //fait au moins une fois for (Initialization; condition; update) statement ; e.g. for (i=1; i<n; i++) { double interest = balance * rate / 100; balance = balance + interest; } condition oui non

boolean et test Combinaison de conditions (test booléens) –&&ET –|| OU –! NON e.g. if (0 < amount && amount < 1000)... Tester la condition la plus exigeante dabord, ne pas faire des tests redondants –if (amount > || amount < 5000) … –if ((0 100) …

Structure de données de base Tableau (Array) E.g. double [ ] a = new double[10]; for (i=0; i<10; i++) a[i] = i; a 0 9 String [ ] [ ] board = new String [3] [4]; board[0] [0] board[2] [3]

String comme une classe spéciale String s; s = Hello world!; Méthodes –Length(), –substring(début, longueur), substring(début, fin+1), –compareTo(t) < 0, equalsIgnoreCase("Y") –… Helloworld! s … null référence corps

Classe Classe = modèle (moule) à objet Définition dune nouvelle classe –Identificateur (nom de classe) –Attributs (ou variables) –Méthodes (dont constructeur) E.g. public class Rectangle { public Rectangle(int x, int y, int width, int height) { this.x=x; this.y=y; this.width=width; this.height=height; } int x, y, width, height; public int getWidth() {return width; } }

Créer des objets dune classe Rectangle box, box1, box2; box = new Rectangle(5, 10, 20, 30) ; box1 = new Rectangle(35, 30, 20, 20) ; box2 = new Rectangle(45, 0, 30, 20) ;

Manipulations des objets Référer à un attribut (accessible) dobjet box.xbox.ybox.widthbox.height e.g. box.x = box.x + 1

Manipulations Différentes références peuvent référer au même objet: box2 = box; box2.y ++; box.y =?

Rectangle box = new Rectangle(5, 10, 20, 30); Rectangle box2 = box; box2.translate(15, 25); (Supposons que la méthode translate(15, 25) change X et y par +15 et +25.) Changements faits sur lobjet Et non sur la référence.

Comparaison dobjet Comparer les références box == box2: les 2 références réfèrent au même objet? box != box2: elles réfèrent aux objets différents? Comparer le contenu des objets –définir equals dans la classe –box.equals(box2) Des méthodes de comparaisons prédéfinies dans String String input; … if (input.equals(You are wright")) … if (input.equalsIgnoreCase("You are wright")) …

Plus sur classe Forme générale dune déclaration de classe: accessSpecifier class ClassName { constructors methods fields } E.g. public class BankAccount { public BankAccount(double initialBalance) {... } public void deposit(double amount) {... }... }

Constructeurs Constructeur implicite –public NomClasse (); –Retourne un objet (instance) du type de la classe –Aucun paramètre –Défini si aucun autre constructeur est défini par le programmeur –E.g. public class BankAccount { } implicitement: public BankAccount(); Dautres constructeurs explicits –Ne doit pas spécifier le type de retour –Différents constructeurs doivent prendre différents paramètres (différents types ou différents nombres - signature) –Ne doivent pas avoir de conflit sur la signature (nom + suite des types de paramètres) –E.g. public BankAccount(String name) {…} public BankAccount(float amount) {…}; –Un constructeur peut utiliser un autre: public BankAccount(String name) {this(); this.owner = name; …}

Exemples public class A { int a; } –new A()? –new A(1)? public class A { public A(int a) {this.a=a;} int a;} –new A()? –new A(1)?

Attributs (variables) Les attributs composent la partie « physique » dun objet Il y a une place créée dans un objet pour stocker leur valeur Type dattribut (int, String, … ou une classe) Protection (public, private, …) –Plus de détails plus tard Syntaxe: accessSpecifier class ClassName {... accessSpecifier fieldType fieldName;... }

Méthodes Une méthode = une procédure, une action, … définie dans la classe Un objet (instance) a une référence vers cette procédure, ce qui lui permet de lappeler (exécuter) Syntaxe: accessSpecifier returnType methodName (parameterType parameterName,...) { method body } e.g. public void deposit(double amount) {... }

this Cette référence spéciale permet de référer au même objet à partir duquel la méthode est appelée (objet courant) E.g. public class BankAccount { … public void withdraw(double amount) { double newBalance = balance - amount; balance = newBalance; } … public double balance; } BankAccount moreSavings = new BankAccount (1000); int balance; moreSavings.withdraw(500); this.balance

This: résoudre le conflit public class Rectangle { public Rectangle(int x, int y, int width, int height) { this.x=x; this.y=y; this.width=width; this.height=height; } int x, y, width, height; public int getWidth() {return width; } }

Protection public: permet un accès de nimporte qui private: accessible seulement par une méthode de la même classe Sans spécification: accessible du même package (à étudier plus tard) protected (package, plus tard) Conseils: –Protéger le plus possible les attributs dun objet –Créer des méthodes daccès de lextérieur Lire la valeur (accessor) Modifier la valeur –Accessibilité des méthodes public: permet à lutiliser de lextérieur private: ne peut être utilisée que par une méthode définie dans la même classe Q: Peut-on créer un constructeur private?

Conversion automatique de types Widening byte short int long float double char Narrowing (casting) double float long int char short byte

Signature et matching de méthode int min(int a, int b) {…} float min(int x, int y) {…} //même signature en Java - conflit float min(float x, float y) {…} //diff. signatures Matching: –min(1, 2): min(int a, int b) –min(1, 0.2): min(float x, float y) Ambiguité (erreur de compilation) –boolean inf(float x, int y) {return x<y} –boolean inf(int x, float y) {return x<y} –inf(1,2)?

Plus sur Array Array: Séquence de valeurs du même type Construire un Array: new double[10] Stocker des valeurs double[] data = new double[10]; À la création, les valeurs déléments sont initialisée: –nombre: 0 –Boolean: false –Référence à Object: null –(Attention: Array et String sont aussi des classes dobjet)

Plus sur Array double[] data = new double[10];

Plus sur Array data[2] = 29.95;

Traverser un Array Traverser tous les éléments: for (Type variable : collection) statement E.g. double[] data =...; double sum = 0; for (double e : data) { sum = sum + e; } Équivalent à : double[] data =...; double sum = 0; for (int i = 0; i < data.length; i++) { double e = data[i]; sum = sum + e; }

Copier un Array double[] data = new double[10]; // fill array... double[] prices = data; // Copier la référence

Copier un Array double[] prices = (double[]) data.clone();

Copier les éléments de Array System.arraycopy (from, fromStart, to, toStart, count);

Ajouter un élément dans Array System.arraycopy(data, i, data, i + 1, data.length - i - 1); data[i] = x;

Enlever un élément de Array System.arraycopy(data, i + 1, data, i, data.length - i - 1);

Agrandir un Array Si un Array (data) nest pas asez grand: Créer un nouveau Array plus grand: double[] newData = new double[2 * data.length]; Copier les éléments dans le nouveau Array: System.arraycopy(data, 0, newData, 0, data.length); Réaffecter la référence (data) au nouveau Array: data = newData;

ArrayList – une structure de données plus flexible The ArrayList class manages a sequence of objects Can grow and shrink as needed ArrayList class supplies methods for many common tasks, such as inserting and removing elements The ArrayList class is a generic class: ArrayList collects objects of type T: ArrayList accounts = new ArrayList (); accounts.add(new BankAccount(1001)); accounts.add(new BankAccount(1015)); accounts.add(new BankAccount(1022)); size method yields number of elements

Obtenir un élément de ArrayList Use get method Index starts at 0 BankAccount anAccount = accounts.get(2); // gets the third element of the array list Bounds error if index is out of range Most common bounds error: int i = accounts.size(); anAccount = accounts.get(i); // Error // legal index values are 0...i-1

Ajouter un élément Remplacer un élément existant: BankAccount anAccount = new BankAccount(1729); accounts.set(2, anAccount); Ajouter (insérer) un nouvel élément à lindexe i: accounts.add(i, a)

Enlever un élément accounts.remove(i)

Traverser un ArrayList Similare à Array: ArrayList accounts =... ; double sum = 0; for (BankAccount a : accounts) { sum = sum + a.getBalance(); } Equivalent à: double sum = 0; for (int i = 0; i < accounts.size(); i++) { BankAccount a = accounts.get(i); sum = sum + a.getBalance(); }

Différences sur la taille Array: length(attribut) ArrayList:size()(méthode) String:length()(méthode)

Attention length = nombre maximal déléments que Array peut contenir, même si ces places ne sont pas remplies.

Attention Éviter de créer deux Array séparés pour la même série de données (mise à jour difficile)