Télécharger la présentation
La présentation est en train de télécharger. S'il vous plaît, attendez
Publié parGeneviève Ledoux Modifié depuis plus de 7 années
1
Notions de base de programmation et Objets
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); // >14
3
Comprendre comment ça fonctionne
int:a int a; a = 10; int b = a; a++; int:a 10 int:a int:b 10 10 int:a int:b 11 10
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 {…} public class Rectangle {…} Circle soleil; //déclaration de la var. Rectangle box; soleil = new Circle(); //créer une instance box = soleil; // Erreur: types incompatibles box = new Circle(); //Erreur
5
Contrôle du programme if condition then statement else statement ;
non 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
6
boolean et test Combinaison de conditions (test booléens)
|| OU ! NON e.g. if (0 < amount && amount < 1000) . . . Tester la condition la plus exigeante d’abord, ne pas faire des tests redondants if (amount > || amount < 5000) … if ((0 < amount && amount < 1000) && amount > 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 String [ ] [ ] board = new String [3] [4]; éléments: 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") … référence corps s … null H e l o w r d !
9
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 d’objet)
10
Array double[] data = new double[10];
11
Array data[2] = 29.95;
12
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; }
13
Copier un Array double[] data = new double[10]; // fill array double[] prices = data; // Copier la référence
14
Copier un Array double[] prices = (double[]) data.clone();
15
Copier les éléments de Array
System.arraycopy (from, fromStart, to, toStart, count);
16
Ajouter un élément dans Array
System.arraycopy(data, i, data, i + 1, data.length - i - 1); data[i] = x;
17
Enlever un élément de Array
System.arraycopy(data, i + 1, data, i, data.length - i - 1);
18
Agrandir un Array Si un Array (data) n’est 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;
20
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<T> collects objects of type T: ArrayList<BankAccount> accounts = new ArrayList<BankAccount>(); accounts.add(new BankAccount(1001)); accounts.add(new BankAccount(1015)); accounts.add(new BankAccount(1022)); size method yields number of elements
21
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 i-1
22
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 à l’indexe i: accounts.add(i, a)
23
Enlever un élément accounts.remove(i)
24
Traverser un ArrayList
Similare à Array: ArrayList<BankAccount> 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(); }
25
Différences sur la taille
Array: length (attribut) ArrayList: size() (méthode) String: length() (méthode)
26
Attention length = nombre maximal d’éléments que Array peut contenir, même si ces places ne sont pas remplies.
27
Attention Éviter de créer deux Array séparés pour la même série de données (mise à jour difficile)
28
Classe Classe = modèle (moule) à objet
Définition d’une 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; } Note: this.x = x Nom de classe constructeur attributs méthodes
29
Créer des objets d’une 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);
30
Manipulations des objets
Référer à un attribut (accessible) d’objet box.x box.y box.width box.height e.g. box.x = box.x + 1
31
Manipulations Différentes références peuvent référer au même objet:
box2 = box; box2.y ++; box.y =?
32
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 l’objet Et non sur la référence.
33
Comparaison d’objet 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 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; } public boolean equals(Rectabgle r) {return this.x==r.x && this.y==r.y && this.width==r.width && this.height==r.height; } box.equals(box2)
34
Comparaison d’objet Des méthodes de comparaisons prédéfinies dans String String input; … if (input.equals(“You are right")) … if (input.equalsIgnoreCase("You are right")) …
35
Plus sur classe Forme générale d’une déclaration de classe:
accessSpecifier class ClassName { constructors methods fields } E.g. public class BankAccount { public BankAccount(double initialBalance) { } public void deposit(double amount) { } }
36
Constructeurs Constructeur implicite D’autres constructeurs explicits
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(); D’autres 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; …}
37
Exemples public class A { int a; } public class A {
new A()? new A(1)? public class A { public A(int a) {this.a=a;} int a;}
38
Attributs (variables)
Les attributs composent la partie « physique » d’un objet Il y a une place créée dans un objet pour stocker leur valeur Type d’attribut (int, String, … ou une classe) Protection (public, private, …) Plus de détails plus tard Syntaxe: accessSpecifier class ClassName { accessSpecifier fieldType fieldName; . . . }
39
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 l’appeler (exécuter) Syntaxe: accessSpecifier returnType methodName (parameterType parameterName, . . .) { method body } e.g. public void deposit(double amount) { }
40
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
42
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; }
43
Protection public: permet un accès de n’importe 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 d’un objet Créer des méthodes d’accès de l’extérieur Lire la valeur (accessor) Modifier la valeur Accessibilité des méthodes public: permet à l’utiliser de l’exté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?
44
Conversion automatique de types
Widening byte shortintlongfloatdouble char Narrowing (casting) doublefloatlongintcharshort byte
45
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)?
Présentations similaires
© 2024 SlidePlayer.fr Inc.
All rights reserved.