Add new file
This commit is contained in:
commit
fed0f16a8c
1 changed files with 402 additions and 0 deletions
402
Cours1&2.md
Normal file
402
Cours1&2.md
Normal file
|
@ -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 a new issue