Programmation
(Java)
Cahier des charges
Analyse
Conception
UML
Unified
Modeling
Language
Malloc = new
Free (fait automatiquement)
Char* = string
Programmation orienté objet :
Introduction :
Les langages de programmation vus jusqu’à présent (C et C++) ne supportent pas la
programmation orientée objet contrairement à d’autres langages comme le Java.
Un cycle est une succession des étapes à mener à bien pour arriver au terme du projet,
la programmation a une position centrale dans un cycle.
On va chercher à coder en un minimum de lignes, et prévoir de nombreuses maintenances qui
pourront être réalisées par des gens externes au groupe de développement.
Maitrise d’ouvrage : Paye les coûts de développement et rédige le cahier des charges
Maitre d’œuvre : Groupe ou individu à qui on confie le projet.
Cycle de vie en V :
Normalement si on a bien travaillé on obtient 17 diagrammes différents, groupés en 3 lots :
- Diagrammes structurels
- Diagrammes comportementaux
- Diagrammes d’interaction
Désormais en on ne passera plus par le main, il ne servira qu’à lancer le programme (10 lignes
maximum).
Le paradigme objet :
Un paradigme : Modèle théorique de pensée qui oriente la recherche et la réflexion scientifique.
Ensemble cohérent de concepts, utilisés pour une programmation efficace et rapide.
Les développeurs peuvent considérer le programme comme une collection d’objets en
interaction.
Termes en Java :
C/C++
TAD
(=structure)
Instance d’un TAD
Fonction
Les procédures sont des fonctions particulières donc ce sont aussi des méthodes.
Le langage Java a quelques particularités qui n’existent pas en dans des langages procéduraux.
1. L’encapsulation : Pour expliquer on utilise un exemple, les variables d’une fonction C
sont encapsulées dans la fonction (elles ne peuvent pas être appelées hors de la
fonction).
Le principe est le même mais élargi, on va pouvoir rendre invisible une classe et on va
cacher tous ses attributs.
On peut trouver dans deux classes différentes des méthodes avec le même nom.
Exemple : TAD Point :
2. Le polymorphisme : A l’intérieur d’une classe on peut avoir la même signature formelle
3. La généricité : Pouvoir réutiliser une classe pour un autre projet (par exemple une grille
d’un jeu d’échec pour un jeu de dames)
4. La persistance : Sauvegarder le travail ou la partie, et pouvoir la rouvrir tel quel plus
tard.
Faisable très facilement en Java (1 ligne).
5. L’héritage : Permet de récupérer les attributs d’une classe et d’en rajouter, par exemple
en utilisant une classe pour faire une fenêtre (cadre, boutons en haut à droite, etc) puis
en ajoutant d’autres fonctionnalités (menus, etc).
Structuration logique :
• Toute application est une partition de classes
• Chaque classe est la description complète d’une entité fonctionnelle du problème à
traiter (TAD en C/C++, TABLE en SQL)
• Les entités sont identifiées en phase d’analyse (UML)
• Les attributs sont les propriétés de chaque entité (Champs de TAD en C, Colonnes en SQL)
• Les méthodes sont les opérations (comportements) de chaque entité décrite (fonctions
en C/C++)
• Un diagramme de classes UML rassemble et relie entre elles toutes les classes du
problème traité
Module M213 / Langage Java :
• Le mot clé class remplace struct
• Introduction spécificateurs de portée (private/public)
• Masquage implicite de la définition de type (typedef)
• Pas d’accessibilité externe aux champs (private)
• Moyens standards de construction (constructeurs)
• Allocation dynamique des instances (objets)
• Consultation/modification des champs par accesseurs
• Encapsulation des fonctions (méthodes)
C/C++
Java
struct Spoint {
double abscisse;
double ordonnee ;
};
typedef struct Spoint point;
point creerpoint(double uneAbs, double uneOrd);
Constructeur
char* toString(point unA);
double distance(point unA, point unB);
public class Point {
private double abscisse;
private double ordonnee;
public Point (double uneAbs, double uneOrd) {
abscisse= uneAbs;
ordonnee= uneOrd;
}
public double getAbscisse() {return abscisse;}
public double getOrdonnee() {return ordonnee;}
public String toString() {
return "(" + abscisse + " , " + ordonnee + ")" ;
}
public double distance(Point unB) {
double deltaX= abscisse - unB.abscisse;
double deltaY= ordonnee - unB.ordonnee;
return Math.sqrt(deltaX*deltaX + deltaY*deltaY);
}
}
Valeurs par défaut,
précisées dans le
constructeurs
JavaBeans
- Toutes les variables sont dans la Pile
- Tous les objets sont dans le TAS
- Les ruptures sont marquées par des majuscules
- Les méthodes sont en minuscules
- Un constructeur a toujours le nom de la classe
- Chaque classe décrit toutes les propriétés et toutes les opérations
- Tous les modèles sont encapsulés (visibilité limitée !)
toString : Outil d’aide aux test unitaires (il s’agissait d’une fonction maintenant il s’agit d’une
méthode). (Elle produit une forme externe de toutes instances du TAD)
Le return est identique au C, les + permettent la concaténation. Ici le toString retournera une
chaine de caractères (string) du type "(abscisse , ordonnée)", exemple : (1 , 0.7).
distance : public double distance(Point unB), on a juste un seul paramètre. Il y a en réalité deux
objets, il s’agit d’un objet dit objet support, il est implicite, c’est sur lui qu’est appliqué
la méthode.
get : Permet de récupérer les valeurs des attributs (car ils sont privés)
set (à la même manière qu’un get) : Permet de modifier les attributs
Dans l’exemple ci-dessus, on pourra récupérer l’abscisse ou l’ordonnée mais les modifier.
En Java, il n’y a pas de compilation « séparé » (pas de prototypes), Java compile chaque
classe séparément et en totalité.
Le main est une méthode comme une autre, placée dans une ou plusieurs classes choisies par
le développeur (il faudra alors préciser laquelle lancer).
Le cas des constructeurs :
- Pas de mention du retour (ni type, ni void)
- Constructeur par défaut (sans paramètres), il est obligatoire d’après les règles de codage
- Constructeurs normaux (signatures différentes)
- Possibilité d’invoquer un constructeur dans le corps de la définition d’un autre
constructeur
Exemple pour un objet de la classe Point :
public Point() {
abscisse= 0.;
ordonnee= 0.;
}
public Point(double x, double y) {
abscisse= x;
ordonnee= y;
}
- Mot clé new pour invoquer un constructeur
Exemple pour un objet de la classe Point : Point p0= new Point();
Point p1= new Point(1.5, -2.7);
Appeler une méthode :
- support.méthode();
- Avec plusieurs supports : p1.p2.méthode(); Avec plusieurs paramètres p1.méthode(p2,p3);
Constructeur par défaut
Constructeur normal
Opérateur d’application
Objet implicite
Editeur de texte
Programmeur
Papiers où sont écris de
la programmation C
point.c
fichier
point.obj (.o pour linux)
point.exe
Fait disparaitre et traite les #
(les directives)
Fichier contenant du binaire translatable
(Ce fichier ne se produit pas s’il y a des erreurs de compilation)
Utilise les .obj et les bibliothèques
(.lib sous Windows et .a sous Linux/CodeBlocs)
Applications
Programmeur
Programmation Java
Editeur de texte
Compilateur
(javac)
Point.java
Point.class
Processus qui lit ligne par
ligne le P code et l’exécute
P majuscule obligatoire
car c’est une classe
En byte code (ou code
intermédiaire ou encore P code)
Chaine de production de programme :
En C :
Système d’Exploitation
(le chargeur, l’ordonnanceur (gestionnaire de tâches), le filemanager, l’allocateur mémoire,…)
Processus
TAS
Piles
En Java :
JavaDoc : Permet de faire des balises avec un éditeur de texte (comme bloc-notes par exemple),
à la manière de l’HTML. Elle commence toujours par des « @ », exemple :
@author Alain Thuaire - Universite de Nice/IUT - Departement informatique
@version 1.0.0 : version initiale
Lorsqu’on suit ce « chemin » de production on utilise l’invite de commande windows, en
appelant le compilateur avec comme argument « help » on peut voir qu’il existe de nombreuses
options qui ne sont pas gérées par les IDE. (exemple : matches qui permet de gérer des
expression régulières comme avec un grep).
Rappel : ls (linux) dir (windows)
Préprocesseur (lint)
Compilateur (gcc)
Editeur de liens
(links)
Le chargeur
(loader)
JVM : Java Virtuel Machine
(java)
1 / 4 100%
La catégorie de ce document est-elle correcte?
Merci pour votre participation!

Faire une suggestion

Avez-vous trouvé des erreurs dans linterface ou les textes ? Ou savez-vous comment améliorer linterface utilisateur de StudyLib ? Nhésitez pas à envoyer vos suggestions. Cest très important pour nous !