commit
fed0f16a8c
1 changed files with 402 additions and 0 deletions
@ -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 <int abs, int ord> |
||||
|
Cercle <Point centre, double rayon> |
||||
|
|
||||
|
|
||||
|
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; i<b; i++){ |
||||
|
p+=a |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
Le code interne ne concerne pas le client : le encapsulation |
||||
|
|
||||
|
- { $\leftarrow$ } |
||||
|
- si homonyme l'interne masque l'externe |
||||
|
|
||||
|
### 8- Portée |
||||
|
|
||||
|
int ajoute(int a, int b){ |
||||
|
int somme; |
||||
|
somme+=a; |
||||
|
somme=somme+b; |
||||
|
return somme; |
||||
|
} |
||||
|
Si une seule ligne, pas besoin d'acolades |
||||
|
|
||||
|
int calcul(){ |
||||
|
if(somme>10){ |
||||
|
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 |
||||
|
} |
||||
|
|
||||
Loading…
Reference in new issue