commit fed0f16a8cb19e1773beeac27f6cce12e11e7ff0 Author: hschindler Date: Fri Mar 9 15:57:44 2018 +0100 Add new file diff --git a/Cours1&2.md b/Cours1&2.md new file mode 100644 index 0000000..cfd899f --- /dev/null +++ b/Cours1&2.md @@ -0,0 +1,402 @@ +--- +title: "Génie logiciel, Séance 1 et 2" +author: [SCHINDLER Hugo] +date: \today +titlepage: true +... + +\newpage + +# Introduction + +## Génie logiciel + +**Génie**: ensemble d'activités de conception et de mise en oueuvre des produits et des procedures tndant à rationaliser la production du logiciel de son suivi + +**Projet final**: logiciel + +**Procedure**: pour rationaliser dvp + +Schéma 1 + +## Java + +Pas de J2E, ni d'application rézo, ni multisclalait, ni de graphisme. + +## Compétances + +- Analyse système +- Modélisation sous objet +- Communication standart +- Apprendre à se servir d'un IDE : Eclipse +- Design Patern : solution standart à des problèmes récurrents + +## Java impératif + +TD1 sur machine pour séance 1 et 2 + +Notation UML + +### Language compilé + +Code source compilé, traduit en language machine : compilateur qui optimise en fonction de la machine cible + +Languages compilés : C, C++, Pascal + +Le code source est traduit en language machine + +Avantages : + +- protection des sources +- performances (traduction optimisation par rapport à la cible + +Incovénients : + +- Pas portable : recompiler pour chaque cible +- modif du code source $\rightarrow$ recomplier + +### Language interprétés + +Python + +Traduction d'une ligne du language source au moment de l'exécution + +Avantages : + +- modif de code : pas besion de recompiler +- protable + +Incovénient : + +- lent : que le lg (language) compilé +- code source fournit au client + +### java "semi-compilé" + +Code source (prog.java) $\Rightarrow$ compilo $\Rightarrow$ byte code (prog.class) $\Rightarrow$ JVM (interpréteur) $\Rightarrow$ exécution + +Exemple : progCour1.java + +indentation non obligatoire + +Compilateur : javac progCour1 + +Execution : java progCour1 + + println + print("\n") + +Erreur de compilation : manque de point virgule + +## Environement de développment intégré + +IDE : masque ces étapes, il le fait pour nous + +Eclipse + +Work space à surveiller + +Code source dans un répertoire java + +Nouveau fichier : new class + +CTRL espace complétion automatique + +Pliage du code, auto génération (on écrit que la moitié) + +## Syntaxe JAVA + +### 1-Déclaration des variables + +type nom; + +- debut lettre +- a-z, A-Z, 0-9, pas de caratères spéciaux + +Convention: +nombreEleve : notation Chamau Kamel case +Sauf si constante + +initialisation à zéros par défaut + + +#### Type + +- Primitifs +- boolean +- char + + - entier + + + - byte (1 octet) + - short(2 octets) + - int (3 octets) + - long (4 octets) + +- flottant + - float (4 octets) + - double (8 octets) +-Non primitifs + - N upplet des primitifs + - structure + - string + + + + type Point + Cercle + + + int nombreEleve + Point p1 + cercle c + +Schéma 2 + + +Tableau ensenble fini d'éléments du même type : déclaration + + type[] nom + +### 2-Création pour les non primitifs + +int[] notes; // déclaration +notes = **new** int[4]; //création + +**Commentaire** // ou /* notes */ + +Schéma 3 + + Point p; // déclaration + /* + ci dessus création + du point + */ + p=new Point(4, 3); + + // ou 1 seule ligne + + Point p1=new Point(4, 3); + +Schéma 4 + +### 3-Affectation/Accès + +Attention aux + +Classe Structure avec majuscule + +Schéma 5 + + int age; + age=20; + int[] notes= new int[4]; + notes[1]=18; + Point p1=new Point(4, 3); + p1.abs=5 // nom de l'objet puis de l'attribut + Cercle c=new Cercle(); + c.centre=p1; + p1.ord=6; + c.centre.ord//ordonnée du centre du cercle c + + class Exo1{//Schéma mémoire 6 + public static void main(String[] toto){ + int[] tabA = new int[] {2, 4, 8}; + // c'est la même chose que + tabA=new int[3]; + tabA[0]=2; + tabA[1]=4; + tabA[2]=8; + + int[] tabB=tabA; + System.out.print(tabB[2])//affiche "8"; + tabB[2]=7; + System.out.print(tabA[2])//affiche "7"; + tabB[3]=9;//$\rightarrow$ indexof Array out of bound exception + int taille = tabA.length; //capacité du tableau pas le nombre d'éléments déjà rangé dedans + + int[][] g=new int[2][3]; + g[0][1]=24; + g[1][2]=13; + } + } + + +### 4 Typage + + int i; + i=3.5; //"type mismatch" cannot convert from double to int + +transtypage convertir un type à un autre + +- sans perte d'information + + int i=3; + +transtypage implicite double d=i + +- avec perte d'information + + double d=3.5 + +"cast" int i= (int) d + +### 5 Booléens et conditions + + double moy; + boolean estBon = moy>=15; + boolean rattrage = moy<8; + boolean top = moy==20; + + +* affectation = +* test d'égalité == pour les types primitifs + + int[] tabA= new int[] {3, 4}; + int[] tabB= new int[] {3, 4}; + boolean b= tabA==tabB;//false zone d'@ différentes + boolean b2=tabA[0]==tabB[0];//true + + + if (moy>=15){ + System.out.print("bon travail") + }else if ((!estbon)&&(!rattrapage)){ + System.out.print("peut mieux faire") + } + +&& Et paresseux par rapport à & + +|| Ou + + + +#### Structures conditionnnelles + + if (cond){ + + } + + if (cond){ + action si vrai + }else{ + action si faux + } + + if (cond1){ + action si cond1 vrai + }else if (cond2){ + action si cond 1 faux et cond 2 vrai + }else{ + action cond 1 faux et cond 2 faux + } + +switch case fait les suivant si pas de break + + String categorie = new String(); + switch(age){ + case 6: + categorie="petit poussin"; + case 8: + categorie="pupille"; + case 10: + categorie="poussin"; + break; + default://si aucune case n'est validé + categorie="véréran" + } + +### 6 Boucles + + while(cond){ + action + } + + + for(index; conditon de poursuite; incrément) + + do { + action + }while(cond); + + int [] notes = new int[] {10, 17, 15}; + int somme=0; + + for (int i=0; i<3; i++){ + somme= somme+notes[i] + //somme+=notes[i] + } + + +### 7 méthodes + +fonction + +Possède une signature ou un contrat + +**Signature** : type de retour, nom de la méthode(nom, type et ordre des paramètres) + + double moyenne(int a, int b, double c) + + Point[] nuage(); + + + int ajoute(int a, int b){ + return (a+b) + } + + int produit(int a, int b){ + return a*b + //ou alors + int p=0; + for(int i=0; i10){ + return 20; + }else{ + return 0; + } + +### 9-Passage de ref + + +Type primitif : on passe la valeur +Type non primitif : on passe l'adresse + + + int[] notes=new int[] {13, 15, 17} + calcul(notes) + Systeme.out.println(notes[0]) + + void calcul(int[] tab){//on peut déclarer dans l'ordre que l'on veux. + tab[0]=20 + } + + + int i=100 + reduire(i) + S.o.p(i)//100 + + void reduire(int x){ + x=5 + } +