Langages de programmation TP7 Prof. Maria-Iuliana Dascălu Assist. Iulia-Cristina Stănică iulia.stanica@gmail.com
Objectifs pour aujourd’hui Classes et objets La surcharge en Java Les attributs et les méthodes statiques
Classes et objets Classe: modèle à partir duquel les objets sont faits Objet: Entité/concept caractérisée par: des données (champs/attributs) qui décrivent l'état de l'objet des méthodes permettant d’agir sur ces données une identité Exemple: une figure géométrique données: coordonnées, dimension, couleur méthodes: translation, rotation identité: figure1, figure2 etc.
Classe - exemple
Les étapes de la création des objets Exemple: Dog myDog= new Dog (); Déclarez une variable de référence d'une classe: Dog myDog = new Dog (); Créez un objet: Dog myDog= new Dog () ; Affectez l'objet à la référence: Dog myDog = new Dog ();
Le Constructeur A le même nom que la classe Il ressemble à une méthode, mais n'a pas de type de retour Il est utilisé pour initialiser l'état d'un objet
Rappel: Surcharge (overloading) on peut définir plusieurs fonctions qui ont le même nom à condition que leurs signatures soient différentes (surcharge = overloading) le compilateur doit être capable de déterminer la fonction à partir des types des paramètres d'appel public void disp (char c) { System.out.println(c); } public void disp (char c, int num) System.out.println(c + " "+num);
Constructeurs surchargés (overloaded) Si vous avez plus de constructeurs dans une classe, ils doivent avoir des listes d'arguments différentes! Par défaut, le constructeur sans arguments est mis en œuvre (il existe, sans l'écrire), mais... Si vous écrivez un constructeur qui prend des arguments et vous voulez encore avoir un constructeur sans args, vous devez construire vous-mêmes le constructeur sans args!
Constructeurs surchargés (overloaded)
Les membres statiques vs. les membres d'instance Les membres statiques appartiennent à une classe, pas à des objets individuels. Les membres statiques peuvent être accessibles par le nom de la classe ou via des références d'objet. Les membres d'instance ne sont accessibles que par des références d'objets.
Attributs et méthodes statiques Attributs statiques: Appartenant a la classe, pas a l’objet Propriété commune pour tous les objets de la classe Efficience accrue de la mémoire du programme Méthodes statiques Peuvent être invoquées sans avoir créé une instance de la classe Peuvent accéder des attributs statiques et modifier leurs valeurs
Attributs et méthodes statiques
Exercices Faites une classe, appelée Produit, qui a: trois attributs privés: le nom (de type String), le prix de fabrication (de type double), VAT (statique, de type int); un constructeur sans paramètres; un constructeur avec 2 paramètres (pour le nom et le prix du produit); un constructeur avec tous les 3 paramètres; trois méthodes: getNom(), getPrix(), getVAT() qui renvoie le nom, le prix et le VAT du produit - des accesseurs (getters). trois méthodes: setNom(String nom), setPrix(double prix), setVAT(int v), pour établir le nom, le prix de fabrication et VAT pour chaque produit – des mutateurs (setters). une méthode prixDeVente() pour calculer le prix de vente. une méthode prixDeVente(int discount) pour établir le prix de vente avec discount.
Exercices a) Ecrivez un programme (dans une classe TestProduit) qui crée deux produis (2 objets de type Produit) et affichez la somme de leurs prix de vente, sous cette forme: Les produits [nom_produit1] et [nom_produit2] ont le prix total suivant: [la somme de leurs prix.] b) Testez la méthode prixDeVente() avec et sans paramètres pour le même produit c) Créez un ArrayList d’objets Produit et affichez tous les détails des produits (vous devez utiliser une méthode toString()). d) Puis, affichez seulement les détails du produit le plus cher.
Devoir 1) Faites une classe, appelée Circle qui a: - trois attributs: le rayon et les deux coordonnées du centre (de type int); - un constructeur avec 3 paramètres (pour le rayon et les deux coordonnées du centre); - deux autres méthodes: getArea(), qui renvoie l'aire du cercle et getCircumference(), qui renvoie la circonférence du cercle. Ecrivez un programme qui crée un cercle (un objet de type Circle) et affichez l’aire et la circonférence de votre cercle.
Devoir 2) Ecrivez une classe Personne avec les attributs suivants: nom: Le nom de famille de la personne prénom: Le prénom de la personne âge: L'âge de la personne compris entre 0 et 100 ans sexe: Masculin ou Féminin. La classe Personne doit avoir les constructeurs suivants: Personne(): constructeur par défaut Personne(nom, prenom), Personne(nom, prenom, age), Personne(nom, prenom, age, sexe), Personne(Personne). La classe Personne doit contenir des accesseurs et mutateurs pour les différents attributs. Elle doit aussi contenir une méthode toString() donnant une représentation de la classe Personne. Ecrivez aussi une classe de testPersonne afin de tester la classe Personne : dans cette classe, créez un tableau ou un ArrayList d’objets Personne et affichez seulement les détails de la femme la plus âgée.
Devoir 3) Ecrivez une classe Rectangle avec les attributs suivants: longueur, largeur. La classe Rectangle doit avoir les constructeurs suivants: Rectangle(): constructeur par défaut, Rectangle(longueur, largeur), Rectangle(Rectangle). La classe Rectangle doit contenir des accesseurs et mutateurs (qui vérifient que les valeurs sont positives) pour les différents attributs. Elle doit aussi contenir les méthodes: périmètre: Le périmètre est égal à 2 * (longueur + largeur), aire: L'aire est égale à longueur * largeur, estCarre: vérifie si le rectangle est un carré, toString: donne une représentation d'un rectangle. Ecrivez aussi une classe TestRectangle afin de tester la classe Rectangle : créez deux rectangles et appelez toutes les méthodes de la classe Rectangle.
Rappel – Examen partiel L’examen partiel aura lieu Mardi suivant, le 22 novembre, a 10:00. L’examen va durer (approx.) 1h15 Vous aurez 5 exercices a choix multiples (séquences de code, choisir le résultat correct) et 2 problèmes où vous devez écrire vous- mêmes le code (comme on a fait aux TPs) Si vous voulez exercer vos algorithmes & structures de données: https://www.dropbox.com/s/81svzf1aj97vv6y/ lp_devoir_pour_tp8.pdf?dl=0