La présentation est en train de télécharger. S'il vous plaît, attendez

La présentation est en train de télécharger. S'il vous plaît, attendez

Notions de base de programmation et Objets

Présentations similaires


Présentation au sujet: "Notions de base de programmation et Objets"— Transcription de la présentation:

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;

19

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

41

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 shortintlongfloatdouble char Narrowing (casting) doublefloatlongintcharshort 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)?


Télécharger ppt "Notions de base de programmation et Objets"

Présentations similaires


Annonces Google