[PDF] Programmation avancée et répartie en Java : rappels sur les mots





Previous PDF Next PDF



Java Avancé - Cours 1: Concepts

Le paradigme de programmation objet. Concepts de la programmation objet. Import. Maven. Java Avancé. Cours 1 : Concepts. Benjamin Negrevergne.



Programmation avancée en Java Guide pédagogique

Le but du cours est d'étudier en détail tous les aspects de la programmation en Java (classes objets



Initiation à la programmation orientée-objet avec le langage Java

java -classpath /prog/exos1:/cours MyProg. 1.2 Programmation orientée-objet. Chaque langage de programmation appartient à une “famille” de langages 



Programmation avancée et répartie en Java : rappels sur les mots

Pattern-Matching. Déroulement du cours. 1 Flot de contrôle. 2 Gestion des classes. 3 Pattern-matching. Programmation avancée et répartie en Java.



Chapitre 3 - Programmation avancée en Java

Le concept de sous-programme est implémenté dans les langages. C et C++



Les bases de la programmation orientée objet avec Java

Les cours de Rémi Forax C'est un style de programmation où l'on considère que des ... C:eclipseworkspacejava-avancé>java ExceptionExample toto.



Programmation avancée en java IFT-21133 Syllabus

formation s'effectuera à travers l'apprentissage du langage Java. 3.1 Situation dans les programmes. Le cours de programmation avancée en Java est optionnel 



Programmation Orientée Objet avancée avec Java

Programmation. Orientée Objet avancée avec. Java. Dans ce document la description des classes de l'API ne prétend aucunement être exhaustive.



Java Avancé - Mutabilité/Polymorphisme

Objet mutable/non mutable. ? Sous-typage/Polymorphisme. ? Règles de programmation. Page 3. 3. Mutabilité/Immutabilité. ? Qu'affiche le code suivant ? public 



Programmation avancée en Java - Travaux dirigés

Le TD n°8 reprend tous les autres TD du cours JAVA2. Ainsi sont présentés ci-dessous

Programmation avancee et repartie en Java :

rappels sur les mots-cles de Java

Frederic Gava

L.A.C.L

Laboratoire d'Algorithmique,Complexite etLogique

Cours de L1 EPISEN

Plan

1Flot de contr^ole

2Gestion des classes

3Pattern-matching

Plan

1Flot de contr^ole

2Gestion des classes

3Pattern-matching

Plan

1Flot de contr^ole

2Gestion des classes

3Pattern-matching

Flot de contr^ole

Gestion des classes

Pattern-MatchingDeroulement du cours

1Flot de contr^ole

2Gestion des classes

3Pattern-matching

Programmation avancee et repartie en Java3 / 19

Flot de contr^ole

Gestion des classes

Pattern-MatchingDeroulement du cours

1Flot de contr^ole

2Gestion des classes

3Pattern-matching

Programmation avancee et repartie en Java4 / 19

Flot de contr^ole

Gestion des classes

Pattern-MatchingDeroulement du cours

1Flot de contr^ole

2Gestion des classes

3Pattern-matching

Programmation avancee et repartie en Java5 / 19

Flot de contr^ole

Gestion des classes

Pattern-MatchingPourquoi du pattern-matching

Aussi present dans de nombreux langages (OCaml, Haskell, Rust, Scala,etc.)R^oles Conditionnelle etendue (switch) pour des types de donnees dierents. Concu pour :Structures de donnees complexes (types algebriques, voir GADT) comme les arbres,etc.Structures de donnees \modulables" (comportement dierent suivant les types ou les tailles de donnees)Avec record et interface

Le fonctionnement est fortement lie aux record

et interfacesealed (scellees) que nous allons aussi voir.

Programmation avancee et repartie en Java6 / 19

Flot de contr^ole

Gestion des classes

Pattern-MatchingRappel record (1)

Aussi present dans de nombreux langages (Ada, C, OCaml, Haskell, Rust, Scala,etc.)R^oles En general : plusieurs donnees (champs donc nommes a la dierence des nuplets) dans un m^eme typeEn Java : classes simples et purement fonctionnelles/immutables (sans eet de bord, doncnal!)Exemples record Animal(String nom,intage)f...g

Donnera par le compilateur (intermediare)

public nal classAnimalextendsjava.lang.RecordfProgrammation avancee et repartie en Java7 / 19

Flot de contr^ole

Gestion des classes

Pattern-MatchingRappel record (2)

Constructor et methodes

record Animal(String nom,intage)f publicAnimal()f this("", 0 ); g publicAnimal(String name)f this.name = name; this.age = 0; g // Autre codes ! // Mais equal, hashCode, toString, assesseurs inutiles ! gImmutable!

Animal lulu =newAnimal("Lulu", 10);

inta = lulu.age();// OUI ! lulu.age=11;// NON ! lulu.setAge(11);// NON !

record AnimalBis(couleur Pelage)extendsAnimal;// NON !Programmation avancee et repartie en Java8 / 19

Flot de contr^ole

Gestion des classes

Pattern-MatchingRappel record (3)

Autres exemples

record MinMax(intmin,intmax)fg; public staticMinMax(int[] data)f...g record Point(doublex,doubley)fg; var p =newPoint(1,1); record Carre(Point center,doublesize,doubleangle) implementsFigureGeometriquef doublesurface()f...g doubleperimetre()f...g g; Remarque, les champs additionels d'un record doivent ^etre statique.

Programmation avancee et repartie en Java9 / 19

Flot de contr^ole

Gestion des classes

Pattern-MatchingRappel record (4)

Exemple avec streams

// On augmente l'age de tout les animaux zoo = zoo.stream() .map(bestiol>newAnimal(bestiol.age+1,bestiol.nom) ) .collect(Collectors.toList()); // Que les noms

Listnoms = zoo.stream()

.map(Animal::nom) .collect(Collectors.toList()); // .lter(s>...) // .sum()

Programmation avancee et repartie en Java10 / 19

Flot de contr^ole

Gestion des classes

Pattern-MatchingExemples simples (1)

Denition des structures

interfaceShapef g record Rectangle(doublelength,doublewidth)implementsShapef g record Circle(doubleradius)implementsShapef gDenition des structures public static doublegetPerimeter(Shape shape)throwsIllegalArgumentExceptionf return switch(shape)f caseRectangle r>2r.length() + 2r.width(); caseCircle c>2c.radius()Math.PI; default>throw newIllegalArgumentException("Unrecognizedshape"); g; g Remarque : plus besoin deinstanceof!Programmation avancee et repartie en Java11 / 19

Flot de contr^ole

Gestion des classes

Pattern-MatchingExemples simples (2)

Choix des objets et dominance

static voidtypeTester(Object obj)f switch(obj)f case null>System.out.println("null"); caseInteger i>System.out.println("Ainteger"); caseCharSequence cs>System.out.println("Asequenceoflength" + cs.length()); caseString s>System.out.println("String"); g g

Attention, le cas CharSequence

domine String ca rchaque String est aussi une sequence (mais pas l'inverse). String est un sous-t ypede Cha rSequence . Le compilateur verie les dominances

Programmation avancee et repartie en Java12 / 19

Flot de contr^ole

Gestion des classes

Pattern-MatchingExemple plus dicile

Dierencier suivant la taille

Imaginons une pile qui serait soit un tableau (si taille<10) soit une liste. static intsize(Stack s)f switch(s.data)f case int[] a>returna.length(); caseList l>returnl.length(); default>throwError(); g g Ainsi rajouter/supprimer un element pourrait transformer une pile d'un tableau en une liste (et vice-versa) suivant les besoins (un tableau sera plus ecace qu'une liste mais limite en taille ou avec un risque de cellules vides)Default obligatoire?

Oui...mais non, si nous avons le cas Object

ou si nous avons des classes scellees (sealedclass).Programmation avancee et repartie en Java13 / 19

Flot de contr^ole

Gestion des classes

Pattern-MatchingSealed class

R^oles

Restreindre a une classe/interface quelles autres classes/interfaces pour peuvent heriter/implementer. On denit donc bien une branche dans la hierarchie des classes.Inter^et Denir une branche dans la hierarchie des classes. On a alors bien un ensemble restreint de classes, scellees entre-elles. On peut donc tra^ter speciquement cette branche avec le switch.

Programmation avancee et repartie en Java14 / 19

Flot de contr^ole

Gestion des classes

Pattern-MatchingDefault et sealed

Plus besoin dedefaultquand on sait qu'une classe est scellee (limitee) : sealedinterfaceS permits A, B, Cf g nal classAimplementsSf g nal classBimplementsSf g record C(inti)implementsSf g static inttestSealedCoverage(S s)f return switch(s)f caseA a>1; caseB b>2; caseC c>3; g; g s ne p eutplus ^ etreautre chose que soit un A, un B ou un C. Il faut des classes nal (ou record ) pour maintenir la restriction de hierarchie (branche) ou nonselead(mais cela limitera le switch).

Programmation avancee et repartie en Java15 / 19

Flot de contr^ole

Gestion des classes

Pattern-MatchingExemples

Des gures

sealedclassShape permits Circle, Square, Rectanglefg nal classCircleimplementsShapef...g nonsealedclassSquareextendsShapef...g sealedclassRectangleextendsShape permits FilledRectanglef...g Ici, il est possible d'etendre a loisir les Carres (danger!). Il est aussi possible d'etendre un rectangle en un rectangle plein (mais pas autrement!).Tout un chier // Debut chier java publicsealedclassFigurefg // Toutes les autres classes seront sealed a Figure (bof)

Programmation avancee et repartie en Java16 / 19

Flot de contr^ole

Gestion des classes

Pattern-MatchingInterface et Expressions

Denition d'une mini-calculatrice

On souhaite pouvoir evaluer des expressions comme 1 + (23) : sealedinterfaceExpr permits ConstantExpr, PlusExpr, TimesExprf public inteval(); gEvaluation nal classConstantExprimplementsExprf inti;

ConstantExpr(inti)fthis.i = i;g

public inteval()freturni;g g

Utilisation (cas 1 + 2)

Expr e =newPlusExpr(newConstantExpr(1),newConstantExpr(2));

System.out.println(e.eval());

Programmation avancee et repartie en Java17 / 19

Flot de contr^ole

Gestion des classes

Pattern-MatchingPattern et condition

static voidtest(Object obj)f switch(obj)f caseString s && (s.length() == 1)>... caseString s>... default>... g g

Programmation avancee et repartie en Java18 / 19

Flot de contr^ole

Gestion des classes

Pattern-MatchingPattern, sealed et services

Enumeration

publicenum StatusEnumfSUCCESS, ERROR;g switch(status)f caseSUCCESS>... caseERROR>... gSealed sealedabstract classAbstractStatus permits ErrorStatus, SuccessStatusf g switch(status)f caseSuccessStatus s>... caseErrorStatus e>... g

Programmation avancee et repartie en Java19 / 19

Au travail!

quotesdbs_dbs50.pdfusesText_50
[PDF] cours programmation batch

[PDF] cours programmation batch pdf

[PDF] cours projet hec

[PDF] cours protection de l'environnement

[PDF] cours psychologie sociale pdf

[PDF] cours psychopathologie l1 psychologie

[PDF] cours puissance 4ème pdf

[PDF] cours quantité de matière

[PDF] cours quantité de matière seconde

[PDF] cours radar pdf

[PDF] cours rayonnement solaire pdf

[PDF] cours recherche d'emploi pdf ofppt

[PDF] cours recherche internet

[PDF] cours recherche opérationnelle methode de simplexe

[PDF] cours redressement double alternance