25 juillet 2004

Programmation JAVA

Introduction à la programmation orientée objet :
Une classe est un type de données abstrait qui regroupe un ensemble d'objets ayant des caractéristiques communes et un ensemble de comportements (fonctionnalités). Tout objet possède une identité, des caractéristiques (attributs) et un comportement (état). Un objet est une instance d'une classe. Ex : objet souris appartient à la classe animal.
On identifie deux types d'attributs : attributs de classe et attributs d'instance et deux types de méthodes : méthodes de classe et méthodes d'instance. Ainsi deux phases sont nécessaires pour créer un objet à partir d'un constructeur :
1. allocation mémoire (au niveau de la classe)
2. initialisation des attributs d'instance (au niveau de l'objet)

Une classe peut être public, protected ou private. Elle peut aussi être abstraite (sans attributs) ou concrète.

Création d'une classe :
La création d'une classe se fait avec le mot clé class, par convention la 1ère lettre d'une classe est en majuscule. On y déclare des attributs de classe, ce sont des variables visibles par toutes les méthodes de la classe.
class MaClasse {
//définition des données membres de la classe
//définition d'un objet de type Chaîne de caractères
S tring nom1;
//déclaration d'un objet d'une autre classe
ClasseExterne nom2;
}
 

Création d'une méthode
Les éléments fondamentaux d'une méthode (opération susceptible d'être effectuée par une classe) sont :
- le nom,
- les paramètres,

- le type de retour, void si elle ne retourne aucune valeur
- le corps de la méthode.

Syntaxe :

returnType methodName (/*liste de paramètres : type + nom*/){

//corps de la méthode

return +/- valeur de retour;

}

 

Appel de la méthode :

Objectname.methodName(/*liste des arguments*/);

 

Il est possible de surcharger une méthode c'est-à-dire de définir deux méthodes de même nom mais avec des paramètres différents. Par contre il est impossible de différencier deux méthodes uniquement avec leur valeur de retour.

 

Exemple incomplet issu de http://java.sun.com/j2se/1.4.2/docs/api/ pour la classe Time:

 

 

Method Summary
int getDate()
          Deprecated.
int getYear()
          Deprecated.
void setTime(long time)
          Sets a Time object using a milliseconds time value.
S tring toS tring()
          Formats a time in JDBC time escape format

Les constructeurs et la création d'objet :

Un constructeur porte le même nom que la classe dans laquelle il est défini. Si une classe est crée sans constructeur, le compilateur crée automatiquement un constructeur par défaut.
Exemple de constructeur :

MaDate (S tring jour, S tring mois, S tring annee){
this.jour = jour;
this.mois = mois;
this.annee = annee;
}


Exemple de création d'objet :

Aujourdhui MaDate = new ("02","juillet","2004"); 

A chaque création d'objet, le constructeur en question est appelé. On peut définir plusieurs constructeurs par classe avec plus ou moins de paramètres.

Exemple incomplet issu de http://java.sun.com/j2se/1.4.2/docs/api/ pour la classe URL :

Constructor Summary
URL(S tring spec)
          Creates a URL object from the S tring representation.
URL(S tring protocol, S tring host, int port, S tring file)
          Creates a URL object from the specified protocol, host, port number, and file.
URL(URL context, S tring spec)
          Creates a URL by parsing the given spec within a specified context.


Les méthodes et données statiques
La méthode statique que nous connaissons tous est la méthode main(), elle existe indépendamment de toute classe. Le mot clé static peut être utilisé pour une donnée ou pour une méthode, cela veut dire que la donnée ou la méthode n'est pas rattachée spécifiquement à une classe. Une méthode statique ne peut utiliser que des données déclarées comme étant statiques.

static int variable = 45;
public static void main (S tring[] args){/*corps de la méthode*/}

Le mot clé This
Utilisé seul, This est une référence sur l'objet courant, objet pour lequel une méthode a été appelée. Il est couramment utilisé en association avec return. This (/*liste de paramètres*/) appelle un constructeur depuis un autre constructeur.

Encapsulation
On en vient naturellement à la notion d'encapsulation. Un objet rassemble en lui même ses données (les attributs) et le code capable d'agir dessus (les méthodes). Une interface précise les opérations que l'on peut effectuer sur un objet et l'implémentation désigne le code sous-jacent invisible à l'utilisateur pour réaliser les opérations en question : abstraction de données et abstraction procédurale.

Héritage
Il est possible de construire une classe dérivée (héritée, enfant, sous-classe) à partir d'une classe parent  (classe de base, superclasse), c'est ce qu'on appelle l'héritage. Cette classe dérivée a les mêmes propriétés que la classe de base, à cela s'ajoute des fonctions spécialisées propres à la classe dérivée. Ex : la classe cercle peut dériver de la classe ObjetGraphique et peut avoir des attributs supplémentaires, ex : attribut rayon.
class Classe_fille extends Classe_mere { ... }

Plusieurs avantages découlent de l'héritage : diminution de la taille du code, rapidité de développement, programmation différentielle...
Il faut rappeler qu'en java contrairement au C++, il n'y a pas d'héritage multiple. Pour simuler l'héritage multiple en java, on utilise le concept d'interface. Final est utilisé pour éviter à une classe d'avoir des classes dérivées.

public final class Nom_classe
Super est utilisé pour l'appel des méthodes ou des variables de la classe mère, en particulier dans l'appel des constructeurs de la classe mère.
super.nomMethode();

Les classes et méthodes abstraites.

Les classes déclarées avec abstract ne peuvent être instanciées. Les classes abstraites contraignent à fournir un bloc d'instructions pour chacune de leurs méthodes abstraites à l'intérieur d'une nouvelle classe dérivée, laquelle pourra être instanciée. Toutes les méthodes d'une classe abstraite peuvent ne pas être abstraites.

Comment définir une méthode abstraite?

abstract void MaMethode();

On ne définit pas le corps de la méthode mais seulement son nom et ses paramètres d'entrée et de sortie.

Exemple

abstract class Forme {
    ...
    public abstract void superficie() ;
    ...
    }
class Carrée extends Forme {
    ...
    public void superficie () { ... }
    ...
}

Pour en savoir plus sur les classes abstraites :
http://www.laltruiste.com/document.php?compteur=2&rep=9&evolution=71 http://www.infini-fr.com/Sciences/Informatique/Langages/Imperatifs/Java/programmationObjet.html http://penserenjava.free.fr


Les interfaces

Une interface est une classe abstraite dont toutes les méthodes sont abstraites. De plus, Java ne permettant pas l'héritage multiple, l'utilisation des interfaces permet de palier à cette carence dans la mesure où une classe peut désormais implémenter plusieurs interfaces.

Pour définir une interface, il faut utiliser le mot clé interface.

interface NomInterface

Afin d'implémenter une ou plusieurs interfaces, utilisez le mot clé implements.

class NomClasse implements NomInterface, ..., NomInterfaceN

Elles ne peuvent implémenter d'autres interfaces. Par contre, elles peuvent hériter de plusieurs autres interfaces.
public interface NomInterface extends AutreInterface, ..., AutreInterface


Agrégation
L'agrégation est une relation entre deux classes du type : « Est composé de ... » ou « Possède … » ou encore « a … ». Ex : Une voiture est composé d'un moteur, de portes, de vitres, …

Polymorphisme
Il permet à une méthode d'adopter plusieurs formes dans des classes différentes.
Il existe trois types de polymorphismes :

  • polymorphisme ad hoc : possibilité d'avoir des fonctions de même nom avec des fonctionnalités similaires mais dans des classes différentes
  • polymorphisme d'héritage : possibilité d'avoir des fonctions de même nom mais avec des paramètres différents (la surcharge)
  • polymorphisme paramétrique : possibilité de redéfinir une méthode dans des classes héritant d'une classe de base, ainsi on pourra dire chien.manger() au lieu de animal.chien.manger() dans le cas d'une classe chien qui dérive d'une classe animal.

Association
Une classe est composée de 15 à 25 élèves, on a une cardinalité 15..25, ce n'est ni une agrégation ni un héritage. En résumé, une agrégation introduit les notion de relations et de cardinalités souvent rencontrées dans les modélisations de bases de données (MERISE).

Exemples de programmes :
Mini-programme java avec interface graphique

Create polls and vote for free. dPolls.com

Posté par fatihaelh à 14:57 - JAVA - Commentaires [2] - Permalien [#]

Commentaires

    Petite rectification

    ceci est un mauvais exemple de l'association.
    En effet une classe est compose d'eleves. Sans eleve la classe n'existe pas. La relation qui lie classe et eleve est donc une relation de composition (agregation forte). Un meilleure exemple de l'association est ,en reprenant l'exemple de la voiture, le compteur de vitesse. En effet la voiture peut utiliser un compteur de vitesse, mais sans compteur de vitesse, la voiture existe toujours et fonctionne tres bien.

    Posté par Moksha, 11 août 2005
  • Merci pour l'explication

    Bonjour Moksha,

    Je te remercie pour cette explication, je m'excuse auprès de tous pour cette erreur.

    Cordialement,
    Fatiha

    Posté par Fatiha, 14 août 2005

Poster un commentaire