31
Christelle CAILLOUET ([email protected])

Christelle CAILLOUET ([email protected])

  • Upload
    others

  • View
    10

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Christelle CAILLOUET (christelle.caillouet@unice.fr)

ChristelleCAILLOUET([email protected])

Page 2: Christelle CAILLOUET (christelle.caillouet@unice.fr)

C.Caillouet M213-POO 2

Page 3: Christelle CAILLOUET (christelle.caillouet@unice.fr)

Lesvariablesd’environnementu2les�  PATH:contientunelistederépertoiresdanslesquelsvontêtrerecherchéslesfichiersexécutables

èAinsi,afindepouvoirutiliserjavac,java,…,ilpeutêtrenécessairedemodifierlePATHafind'yajouterlerépertoirebinduJRE/JDK

�  CLASSPATH:permetdespécifieràlaJVMlesemplacementsdesfichierscompilésIndispensablepourlespackagesprédéfinis

èLorsquelaJVMabesoind’uneressourceoud’uneclasse,ellelarecherchedanslesdiversélémentsduCLASSPATHdansl'ordredeleurdéclaration

C.Caillouet M213-POO 3

Page 4: Christelle CAILLOUET (christelle.caillouet@unice.fr)

C.Caillouet M213-POO 4

Page 5: Christelle CAILLOUET (christelle.caillouet@unice.fr)

Naturedesvariablesenjava1.  Typeprimitif

�  Ladéclarationréservelaplacemémoirepourstockersavaleur(quidépenddesontype)

2.  Typeobjet

�  Ladéclarationnefaitqueréserverlaplaced’uneréférence(sorted’adressemémoire)quipermettrad’accéderàl’endroitenmémoireoùesteffectivementstockél’objet(vautnullsiréférenceinconnue)ètoutevariabledésignantunobjetestdoncunpointeur!

C.Caillouet M213-POO 5

Page 6: Christelle CAILLOUET (christelle.caillouet@unice.fr)

Typesprimi2fsType Taille

(octets)Valeur Défaut

boolean 1 trueoufalse false

byte 1 Entiersigné 0

short 2 Entiersigné 0

int 4 Entiersigné 0

long 8 Entiersigné 0

float 4 Réelsigné 0.0

double 8 Réelsigné 0.0

char 2 CaractèreUnicode \u0000

C.Caillouet M213-POO 6

Page 7: Christelle CAILLOUET (christelle.caillouet@unice.fr)

A:en2onauxnombresàvirguleflo:ante�  Ilsnesontquedesapproximationsdesvaleurs!

�  Leurégalitéausensdel’opérateur==n’aaucunsens

� Qu’est-cequecelasignifieenpratique?

C.Caillouet M213-POO 7

Page 8: Christelle CAILLOUET (christelle.caillouet@unice.fr)

A:en2onauxnombresàvirguleflo:ante

èSiondécommente,affichenb = 10, d = 0.99999999999999

�  Ilfauttesterleurproximitémodulounepsilondonné

C.Caillouet M213-POO 8

//boucleinfinie!!

Page 9: Christelle CAILLOUET (christelle.caillouet@unice.fr)

Equivalencetypeprimi2f/classe�  Chacundestypesprimitifspeutêtreenveloppédansunobjetprovenantd'uneclasseprévueàceteffetetappeléeWrapper(motanglaissignifiantenveloppeur).Lesenveloppeurssontdoncdesobjetsreprésentantuntypeprimitif.

�  Avantages:�  LesWrapperpeuventêtreutiliséscommen'importequelobjet,ils

ontdoncleurspropresméthodes.�  Inconvénients:

�  Plusd'espacemémoirequeletypeprimitifParexemple:int=4octetsenmémoiremaisInteger=32octetssuruneVMen64bits(20octetsen32bits).

�  L'objetenveloppantestimmuable(nepeutpasêtremodifié)Toutemodificationdesavaleurnécessitedecréerunnouvelobjetetdedétruirel'ancien,cequiaugmenteletempsdecalcul.

C.Caillouet M213-POO 9

Page 10: Christelle CAILLOUET (christelle.caillouet@unice.fr)

Typeprimi2f/classeType Classe

équivalente(Wrapper)

Min Max

boolean Boolean

byte Byte -128 (Byte.MIN_VALUE)

127 (Byte.MAX_VALUE)

short Short -32 768 (Short.MIN_VALUE)

32 767 (Short.MAX_VALUE)

int Integer -2 147 483 648 (Integer.MIN_VALUE)

2 417 483 647 (Integer.MAX_VALUE)

long Long -9 223 372 036 854 775 808 (Long.MIN_VALUE)

9 223 372 036 854 775 807 (Long.MAX_VALUE)

float Float 1.40239846E-45 (Float.MIN_VALUE)

3.40282347E38 (Float.MAX_VALUE)

double Double 4.9406564584124654E-324 (Double.MIN_VALUE)

1.797693134862316E308 (Double.MAX_VALUE)

char Character \u0000 \uFFFF

C.Caillouet M213-POO 10

Page 11: Christelle CAILLOUET (christelle.caillouet@unice.fr)

Exemples� Créationd’unobjetàpartird’unprimitif

int a = 4; Integer i = new Integer(a);

� Créationd’unprimitifàpartird’unobjetint j = i.intValue();

� Créationd’unprimitifàpartird’unechaîne

C.Caillouet M213-POO 11

Page 12: Christelle CAILLOUET (christelle.caillouet@unice.fr)

Conversiondetypededonnées(Transtypage)� Conversionimplicite:

� Modificationdutypededonnéeeffectuéeautomatiquementparlecompilateur(parexempleentrelestypesprimitifsetleurWrapper)int n = 5; Integer m = n;

� Conversionexplicite(cast):� Modificationdutypededonnéeforcée

double x = 8.234; int n = (int) x; // donne n = 8

C.Caillouet M213-POO 12

Page 13: Christelle CAILLOUET (christelle.caillouet@unice.fr)

Passagedeparamètre

1.  Typeprimitif�  Passageparvaleur:

�  Lavaleurdel’argumentestrecopiéedansleparamètredelaméthode

�  Lesmodificationssurleparamètre(i.e.danslaméthode)sontsanseffetsurl’argument(aprèsl’appel)

C.Caillouet M213-POO 13

Page 14: Christelle CAILLOUET (christelle.caillouet@unice.fr)

Passagedeparamètre1.  Typeprimitif

C.Caillouet M213-POO 14

5i

5entier

6

è5

Page 15: Christelle CAILLOUET (christelle.caillouet@unice.fr)

Passagedeparamètre2.  Typeobjet

�  Passageparréférence:�  Laréférenceestrecopiéedansleparamètredelaméthode�  Lesmodificationseffectuéesensuivantcetteréférence(des

champsdel’objet)sontrépercutéesdanslamémoireetdoncsurl’argument

�  Enrevanche,lamodificationdelaréférenceelle-mêmeestsanseffetsurl’argumentècopielocaled’unobjetayantlamêmeréférence

C.Caillouet M213-POO 15

Page 16: Christelle CAILLOUET (christelle.caillouet@unice.fr)

Passagedeparamètre2.  Typeobjet

C.Caillouet M213-POO 16

#1box

@classBoxfield = 5

#1

#1b

field = 6

è6

Page 17: Christelle CAILLOUET (christelle.caillouet@unice.fr)

Passagedeparamètre2.  Typeobjet

C.Caillouet M213-POO 17

#1box

@classBoxfield = 5

#1

#1b

è5

#2tmp @classBox#2field = 6

#2

Page 18: Christelle CAILLOUET (christelle.caillouet@unice.fr)

Alloca2onmémoire� Unobjetnonallouéapourvaleurnull(aucuneréférence)

� Pourqu’unevariableobjetprenneuneautrevaleurquenull,ilfautluiaffecteruneréférence(àl’aidedel’opérateurd’allocationnew)�  Laplacedelaréférenceestalorsréservéeenmémoire�  Lazoneallouéedépenddelatailledel’objet

new Box(); // besoin de stocker 1 int (field) new int[10]; // stocker 10 int + la taille du tableau new Point(1,3); // zone mémoire initialisée à l’aide d’un constructeur

C.Caillouet M213-POO 18

Page 19: Christelle CAILLOUET (christelle.caillouet@unice.fr)

Désalloca(onmémoire� NongéréeparleprogrammeurmaisparleGarbageCollector

�  Lesobjetsquinesontplusréférencés(paraucunevariable!)sontrécupérésparlegarbagecollectorpourrecyclerl’espacemémoire

�  Lesvariablescessentderéférencerunobjet:� Quandonleuraffecteunautreobjet,ounull� Quandonquitteleblocoùellessontdéfinies

C.Caillouet M213-POO 19

Page 20: Christelle CAILLOUET (christelle.caillouet@unice.fr)

C.Caillouet M213-POO 20

Page 21: Christelle CAILLOUET (christelle.caillouet@unice.fr)

LestableauxenJava�  EnJava,lestableauxsontdesobjets�  Déclarationàl’aidedescrochets[]

int[] tab1 = {1,2,3,4,5,6,7,8,9}; int tab2[] = new int[10];

�  Tableauxàplusieursdimensions(tableauxdetableaux):�  Tableauxà2dimensions=matrice[][]�  Tableauxà3dimensions[][][]�  …

�  Accèsàlatailleparl’attributpubliquelengthint n = tab2.length;

C.Caillouet M213-POO 21

Page 22: Christelle CAILLOUET (christelle.caillouet@unice.fr)

Exemples

� Tableauxd’objets

C.Caillouet M213-POO 22

Page 23: Christelle CAILLOUET (christelle.caillouet@unice.fr)

Packagejava.langhttp://docs.oracle.com/javase/8/docs/api/java/lang/package-summary.html�  Ensembledeclassesprédéfiniesquiproposentdesservices�  Principalesclasses(importationimplicite)

�  LaclasseMath�  laclasseString�  LaclasseSystem�  LaclasseObject�  Lesclassesenveloppes(Wrappers)�  LaclasseClass�  LaclasseRunTime�  …

C.Caillouet M213-POO 23

Page 24: Christelle CAILLOUET (christelle.caillouet@unice.fr)

LaclasseStringhttp://docs.oracle.com/javase/8/docs/api/java/lang/String.html

�  Représenteleschaînesdecaractères�  EnJava,leschaînesdecaractèressontdesobjets/!\cenesontpasdestableaux!

�  Créationd’unechaîneString s = new String("bonjour"); String t = "bonjour";

�  Tailled’unechaîneint taille = s.length();

�  Accèsàuncaractèrechar c = s.charAt(3);

C.Caillouet M213-POO 24

è j

Page 25: Christelle CAILLOUET (christelle.caillouet@unice.fr)

Leschaînesdecaractères�  Concaténationdechaînes

String s = t + " toi"; t += " toi";

�  Transtypageimpliciteint i = 12; String s = "" + i;

�  Comparaisondedeuxchaînes�  Opérateur==comparelesréférencesdesobjets�  Méthodeequals comparelescontenusdesréférences

if (s.equals("bonjour"))… �  Recherched’unesous-chaîne

int position = s.indexOf("toi");

�  Extractiond’unesous-chaîneString t = s.substring(position, position+3);

C.Caillouet M213-POO 25

Page 26: Christelle CAILLOUET (christelle.caillouet@unice.fr)

LaclasseMathhttp://docs.oracle.com/javase/8/docs/api/java/lang/Math.html

C.Caillouet M213-POO 26

Page 27: Christelle CAILLOUET (christelle.caillouet@unice.fr)

LaclasseSystemhttp://docs.oracle.com/javase/8/docs/api/java/lang/System.html

�  Centralisel’accès:�  Auxtroisfluxdebasein,out,err�  Àl’horlogedusystèmed’exploitation�  AuxfonctionsutilitairesdelaJVM

�  Principalesméthodesdeclasse:�  MéthodescurrentTimeMillis�  Méthodeexit(System.exit(0);) �  MéthodesgetProperty,setProperty�  …

�  Attributsdeclasseassociésauxfluxstandards System.out Classe PrintStream System.in Classe PrintStream System.err Classe PrintStream

C.Caillouet M213-POO 27

Page 28: Christelle CAILLOUET (christelle.caillouet@unice.fr)

Hiérarchiedeclasses� Unpackagecontientunensembledeclasses� Touteslesclassesd’unpackagesontorganiséesenhiérarchie

� Danslepackagejava.lang,touteslesclassessontdérivéesdelaclasseObject,basedelahiérarchie

http://docs.oracle.com/javase/8/docs/api/java/lang/package-summary.html

C.Caillouet M213-POO 28

Page 29: Christelle CAILLOUET (christelle.caillouet@unice.fr)

LaclasseObject� Cetteclassecontient(sousformedeméthodes),lesservitudesdebasepourlagestiondesobjets

� TransmetimplicitementtoutessesméthodesàtouteclasseJava�  Relationd’héritage(cf.courssuivants)�  InduitlanécessitéderedéfinircesméthodesdanstouteclasseJava

�  Transtypageimplicitepossibledetouteréférencesurunobjetd’uneclassequelconque,dansunevariabledetypeObject(analogieavecletypevoid*dulangageC)

C.Caillouet M213-POO 29

Page 30: Christelle CAILLOUET (christelle.caillouet@unice.fr)

LaclasseObject�  Metàdispositionunconstructeurpardéfaut�  Principalesméthodes(d’instance)

�  toString:retourneundescriptifdel’objetcible�  equals:prédicatd’égalitéde2objets�  clone:créeetretourneunecopiedel’objetcible�  getClass:retournelaclassedel’objetcible�  …

�  Danstouteclasse,onpeutredéfinirlesméthodesdelaclasseObject(cf.coursPolymorphismeplustard)

http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html

C.Caillouet M213-POO 30

Page 31: Christelle CAILLOUET (christelle.caillouet@unice.fr)

Découvrird’autrespackagesetclassesexistantes

� APISpecification

�  Lespackageshttp://docs.oracle.com/javase/8/docs/api/overview-summary.html

�  Lesclasseshttp://docs.oracle.com/javase/8/docs/api/allclasses-noframe.html

C.Caillouet M213-POO 31