Add new file

This commit is contained in:
hschindler 2018-03-09 15:57:44 +01:00
commit fed0f16a8c

402
Cours1&2.md Normal file
View 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
}