Notions de base de programmation et Objets

Slides:



Advertisements
Présentations similaires
Spécialisation/généralisation Héritage Polymorphisme
Advertisements

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
La classe String Attention ce n’est pas un type de base. Il s'agit d'une classe défini dans l’API Java (Dans le package java.lang) String s="aaa"; // s.
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.
66 Utilisation des classes et des objets. 6-2 Objectifs A la fin de ce cours, vous serez capables de : Créer de nouvelles classes à laide de Eclipse Utiliser.
Révision des notions OO et Java Semaine 1 Jian-Yun Nie.
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é.
1 IFT 6800 Atelier en Technologies dinformation Le langage de programmation Java chapitre 3 : Classes et Objects.
COURS DE PROGRAMMATION ORIENTEE OBJET :
La notion de type revisitée en POO
Créer des packages.
Master 1 SIGLIS Java Lecteur Stéphane Tallard Les erreurs communes en Java.
Strings et Tableaux en Java
Les classes présenté par: RAHMOUNE RIME / ZEKRI SELMA.
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++ Les fonctions. Présentation Utilité : Dès qu'un programme dépasse la centaine de lignes de code, il est pratique de pouvoir le décomposer en plusieurs.
Tableaux et Pointeurs Chaînes de Caractères Programmation Impérative II.
Stéphane Frénot, Frederique Laforest, Frédéric Le-Mouël IJA 1 TD 6 IJA Structures de données JAVA.
1 Programmation en C++ Fonctions ● Déclaration et définition de fonctions ● Arguments ● Surcharge ● Arguments optionnels ● Fonctions constantes ● Fonctions.
1 Programmation en C++ C++ de base ● Programme C++ ● Variables, objets, types ● Fonctions ● Namespace ● Tests ● Boucles ● Pointeurs, références.
1 Programmation en C++ C++ de base ● Programme C++ ● Variables, objets, types ● Types et opérations fondamentales ● Tests ● Boucles ● Pointeurs, références.
1 Programmation en C++ Cycle de vie ● La vie d'un objet ● Destructeur ● Gestion de mémoire dynamique.
Semaine 8 Retour sur les tableaux : fonctions et récursivité
Les tableaux différencier les variables simples des variables indicées (ordonnées et numérotées) un identificateur unique désigne un ensemble, une collection.
Modèle objet : les classes
java : l'héritage (rappel)
Environnement de développement des BD
Introduction au Langage Pascal
LES TABLEAUX EN JAVA.
Pas de variable globale
Les notions de classe et d'objet
Eléments d’Informatique Cours11 – Allocation dynamique, listes chaînées Catherine Recanati.
Algorithmique et programmation de modèles numériques
Principes de programmation (suite)
Algorithmique Langage C
Langages de programmation TP7
Semaine 11 Les pointeurs (suite)
Les fonctions.
Programmation en C++ Fonctions
Session 1 31 mai 2017 Plateforme ICONICS Justine Guégan
SIF-1053 Architecture de ordinateurs
PHP Création et manipulation d'images
Principes de programmation (suite)
Week 1 Lecture 1 Introduction à R L3PRO 2017.
Codage Indenter le code Limiter la portée des variables Traiter les erreurs en premier Utiliser le switch au delà de 3 tests en cascades Ne jamais utiliser.
Programmation en C++ Fonctions
Programmation en C++ C++ de base
1 RECURSIVITE PRESENTATION Ch. PAUL ALGORITHMIQUE Présentation de la récursivité.
Programmation Orientée Objet C# El Akel Bouchra ISMONTIC Tanger 2013/2014.
Calcul Scientifique Initiation à SCILB
PHP Création et manipulation d'images
Efficacité des algorithmes
Les classes et les objets
Les structures de base Listes chainées. Listes Les listes(similaire aux tableaux) sont des structures informatiques qui permettent de garder en mémoire.
I-D-L Interface Definition Language Elaboré par Elaboré par : Mohamed Moncef SAAFI Sofien SAGHROUNI Mondher MOULAHI Marwen BALLOUMI LFSi-3.
I-D-L Interface Definition Language Elaboré par Elaboré par : Mohamed Moncef SAAFI Sofien SAGHROUNI Mondher MOULAHI Marwen BALLOUMI LFSi-3.
IDL interface définition langage. Plan Introduction Principaux éléments IDL Types de données IDL Déclaration de module Déclaration d'interface Déclaration.
Programmation par Objets et Java
Principes de programmation (suite)
INTERFACE ET POLYMORPHISME
© Robert Godin. Tous droits réservés.
Chapitre 4 Classes et objets (II)
LISTES.
Listes Chaînées.
STREAMS (et fichiers).
Lecture/Écriture de fichiers (I/O)
Variables et accès en Java
Analyse et programmation langage ADA
Bases de données Singleton pour la connexion
Transcription de la présentation:

Notions de base de programmation et Objets 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); // 13.75 ->14

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

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

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

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 > 10000000000 || amount < 5000) … if ((0 < amount && amount < 1000) && amount > 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]; éléments: 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") … référence corps s … null H e l o w r d !

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)

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

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) 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;

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

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 à l’indexe i: accounts.add(i, a)

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

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(); }

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)

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

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);

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

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 l’objet Et non sur la référence.

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)

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")) …

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) { . . . } . . . }

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; …}

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;}

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; . . . }

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) { . . . }

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 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?

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)?