Télécharger la présentation
La présentation est en train de télécharger. S'il vous plaît, attendez
Publié parLéonce Dupont Modifié depuis plus de 10 années
1
Révision des notions OO et Java Semaine 1 Jian-Yun Nie
2
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); // 13.75 ->14
3
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
4
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
5
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
6
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 > 10000000000 || amount < 5000) … –if ((0 100) …
7
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]
8
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
9
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; } }
10
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) ;
11
Manipulations des objets Référer à un attribut (accessible) dobjet box.xbox.ybox.widthbox.height e.g. box.x = box.x + 1
12
Manipulations Différentes références peuvent référer au même objet: box2 = box; box2.y ++; box.y =?
13
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.
14
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")) …
15
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) {... }... }
16
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; …}
17
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)?
18
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;... }
19
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) {... }
20
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
22
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; } }
23
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?
24
Conversion automatique de types Widening byte short int long float double char Narrowing (casting) double float long int char short byte
25
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)?
26
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)
27
Plus sur Array double[] data = new double[10]; 00000000000000000000
28
Plus sur Array data[2] = 29.95;
29
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; }
30
Copier un Array double[] data = new double[10]; // fill array... double[] prices = data; // Copier la référence
31
Copier un Array double[] prices = (double[]) data.clone();
32
Copier les éléments de Array System.arraycopy (from, fromStart, to, toStart, count);
33
Ajouter un élément dans Array System.arraycopy(data, i, data, i + 1, data.length - i - 1); data[i] = x;
34
Enlever un élément de Array System.arraycopy(data, i + 1, data, i, data.length - i - 1);
35
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;
37
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
38
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
39
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)
40
Enlever un élément accounts.remove(i)
41
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(); }
42
Différences sur la taille Array: length(attribut) ArrayList:size()(méthode) String:length()(méthode)
43
Attention length = nombre maximal déléments que Array peut contenir, même si ces places ne sont pas remplies.
44
Attention Éviter de créer deux Array séparés pour la même série de données (mise à jour difficile)
Présentations similaires
© 2024 SlidePlayer.fr Inc.
All rights reserved.