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