0% ont trouvé ce document utile (0 vote)
23 vues58 pages

Module 3 - Java

Le document traite des concepts orientés objet en Java, notamment les classes, l'héritage, la gestion des exceptions, les paquets et les interfaces. Il fournit des définitions, des exemples de code et des explications sur des concepts tels que les constructeurs, les méthodes statiques et la collecte des ordures. Le document souligne également l'importance de l'héritage pour la réutilisabilité du code et décrit les différents types d'héritage en Java.

Transféré par

ScribdTranslations
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
23 vues58 pages

Module 3 - Java

Le document traite des concepts orientés objet en Java, notamment les classes, l'héritage, la gestion des exceptions, les paquets et les interfaces. Il fournit des définitions, des exemples de code et des explications sur des concepts tels que les constructeurs, les méthodes statiques et la collecte des ordures. Le document souligne également l'importance de l'héritage pour la réutilisabilité du code et décrit les différents types d'héritage en Java.

Transféré par

ScribdTranslations
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd

Concepts orientés objet 15CS/IS45

UNITÉ-3 : CLASSES, HÉRITAGE, EXCEPTIONS,


PAQUETS ET INTERFACES

Syllabus :

Classes, Héritage, Exceptions, Packages et Interfaces :

Classes
mot-clé

Héritage
hiérarchie, surcharge de méthode.

Gestion des exceptions : Gestion des exceptions en Java. Paquets, Accès


Protection, Importation de paquets, Interfaces.
.

Belle penséeVous devez grandir de l'intérieur vers l'extérieur. Personne ne peut vous enseigner, personne
peut vous rendre spirituel. Il n'y a pas d'autre enseignant que votre propre âme.― Swami
Vivekananda

Préparé par Nagamahesh BS, Professeur adjoint, CSE, Institut de Technologie Sai Vidya 1
Concepts orientés objet 15CS/IS45

[Link] :

Définition

Une classe est un modèle pour un objet et définit les champs de données et les méthodes.

de l'objet. Les méthodes de classe permettent d'accéder pour manipuler les champs de données. Le

Les « champs de données » d'un objet sont souvent appelés « variables d'instance ».

Exemple de programme :

Programme pour calculer l'aire d'un rectangle


classe Rectangle
{
int longueur; //Membre de données ou variables d'instance
int largeur;
void obtenirDonnées(int x, int y) //Méthode
{
x;
largeur=y;
}
int aireRect() //Méthode
{
return(longueur * largeur);
}
}

classe RectangleArea
{
public static void main(String args[])
{
Rectangle rect1=new Rectangle();//création d'objet
[Link](10,20); //appelant des méthodes en utilisant un objet avec le point (.)

int area1=[Link]();
[Link]("Aire1="+aire1);
}
}

Préparé par Nagamahesh BS, professeur adjoint, CSE, Sai Vidya Institute of Technology 2
Concepts orientés objet 15CS/IS45

Après avoir défini une classe, elle peut être utilisée pour créer des objets en les instanciant.

classe. Chaque objet occupe une certaine mémoire pour contenir ses variables d'instance (c'est-à-dire

son état).
Après qu'un objet soit créé, il peut être utilisé pour obtenir la fonctionnalité souhaitée.

ensemble avec sa classe.

Création d'une instance d'une classe/Déclaration d'objets :

Rectangle rect1 = new Rectangle()

Rectangle rect2=new Rectangle()

Les deux déclarations ci-dessus déclarent un objet rect1 et rect2 de type

Classe Rectangle utilisant l'opérateur new, cet opérateur alloue dynamiquement

mémoire pour un objet et renvoie une référence à celui-ci. en java, tous les objets de classe

doit être alloué dynamiquement.

Nous pouvons également déclarer l'objet de cette manière :

Rectangle rect1; // déclarer une référence à l'objet.

rect1=new Rectangle() // allouer de la mémoire dans l'objet Rectangle.

Les Constructeurs :

Un constructeur initialise un objet lorsqu'il est créé. Il a la même


nom comme sa classe et est syntaxiquement similaire à une méthode. Cependant,

Les constructeurs n'ont pas de type de retour explicite.

En général, vous utiliserez un constructeur pour donner des valeurs initiales au

variables d'instance définies par la classe, ou pour effectuer toute autre

procédures de démarrage nécessaires pour créer un objet entièrement formé.

Préparé par Nagamahesh BS, Professeur associé, CSE, Sai Vidya Institute of Technology 3
Concepts orientés objet 15CS/IS45

Toutes les classes ont des constructeurs, que vous en définissiez un ou non, car

Java fournit automatiquement un constructeur par défaut qui initialise tout.


les variables membres à zéro. Cependant, une fois que vous avez défini votre propre

Le constructeur, le constructeur par défaut n'est plus utilisé.

Exemple :

Voici un exemple simple qui utilise un constructeur :

// Un constructeur simple.
classeMaClasse
{
int x;

// Voici le constructeur
MaClasse()
{
x = 10;
}
}

Vous appelleriez le constructeur pour initialiser les objets comme suit :

classe ConsDemo
{
public static void main(String args[])
{
MyClass t1 = new MyClass();
MyClass t2 = new MyClass();
[Link](t1.x + " " + t2.x);
}
}

Préparé par Nagamahesh BS, Professeur Assistant, CSE, Institut de Technologie Sai Vidya 4
Concepts orientés objet 15CS/IS45

Constructeur paramétré :

Le plus souvent, vous aurez besoin d'un constructeur qui accepte un ou

plus de paramètres. Les paramètres sont ajoutés à un constructeur dans le

de la même manière qu'ils sont ajoutés à une méthode : il suffit de les déclarer

à l'intérieur des parenthèses après le nom du constructeur.

Exemple :

Voici un exemple simple qui utilise un constructeur :

// Un constructeur simple.
classeMaClasse
{
int x;

// Ce qui suit est le constructeur paramétré


MaClasse(int i)
{
x = 10;
}
}

Vous appelleriez le constructeur pour initialiser des objets comme suit :

classe ConsDemo
{
public static void main(String args[])
{
MyClass t1 = new MyClass( 10 );
MyClass t2 = new MyClass( 20 );
[Link](t1.x + " " + t2.x);
}
}

Cela produirait le résultat suivant :

10 20

Préparé par Nagamahesh BS, professeur adjoint, CSE, Sai Vidya Institute of Technology 5
Concepts orientés objet 15CS/IS45

mot-clé statique

Le mot-clé static est principalement utilisé en java pour la gestion de la mémoire.


Nous pouvons appliquer le mot-clé statique aux variables, méthodes, blocs et imbriqués.
La clé statique appartient à la classe plutôt qu'à l'instance de la classe.

Le statique peut être :

1. variable (également connue sous le nom de variable de classe)

méthode (également connue sous le nom de méthode de classe)

3. bloc
4. classe imbriquée

variable statique

Exemple de programme sans variable statique

Dans cet exemple, nous avons créé une variable d'instance nommée count.
qui est incrémenté dans le constructeur. Puisque la variable d'instance obtient le
mémoire au moment de la création de l'objet, chaque objet aura une copie de la
variable d'instance, si elle est incrémentée, cela ne se reflétera pas sur les autres objets. Donc
chaque objet aura la valeur 1 dans la variable de compte.

classe Compteur
{
int count=0;//la mémoire sera allouée lors de la création de l'instance

Compteur()
{
compte++;
[Link](count);
}
}

Classe MyPgm
{
public static void main(String args[])
{
Compteur c1 = nouveau Compteur();

Préparé par Nagamahesh BS, Professeur adjoint, CSE, Sai Vidya Institute of Technology 6
Concepts Orientés Objet 15CS/IS45

Compteur c2=new Compteur();


Compteur c3=new Compteur();
}
}
1
1
1

Exemple de programme avec variable statique

Comme nous l'avons mentionné ci-dessus, la variable statique n'obtiendra la mémoire que
une fois, si un objet change la valeur de la variable statique, elle la conservera
valeur.

classe Compteur
{
staticint count=0;//ne prendra la mémoire qu'une seule fois et conservera sa valeur

Compteur()
{
compter++;
[Link](count);
}
}
Classe MyPgm
{
public static void main(String args[])
{
Counter c1=new Counter();
Compteur c2=new Compteur();
Compteur c3=new Compteur();
}
}
Sortie : 1
2
3

Préparé par Nagamahesh BS, Professeur adjoint, CSE, Institut de Technologie Sai Vidya 7
Concepts orientés objet 15CS/IS45

méthode statique

Si vous appliquez le mot clé statique à une méthode, cela s'appelle une méthode statique.

Une méthode statique appartient à la classe plutôt qu'à un objet de la classe.


Une méthode statique peut être invoquée sans avoir besoin de créer une instance
d'une classe.
Une méthode statique peut accéder aux membres de données statiques et peut modifier leur valeur.

il.

//Programme pour obtenir le cube d'un nombre donné par méthode statique

classe Calculer
{
static int cube(int x)
{
retourner x*x*x;
}
Classe MyPgm
{
public static void main(String args[])
{
// appeler une méthode directement avec la classe (sans création d'objet)
int resultat=[Link](5);
[Link](result);
}
}

Sortie : 125

ce mot clé

ce mot-clé peut être utilisé pour faire référence à la variable d'instance de la classe actuelle.

S'il y a une ambiguïté entre la variable d'instance et le paramètre,

ce mot-clé résout le problème de l'ambiguïté.

Préparé par Nagamahesh BS, Professeur Assistant, CSE, Institut de Technologie Sai Vidya 8
Concepts orientés objet 15CS/IS45

Comprendre le problème sans ce mot-clé


Comprenons le problème si nous n'utilisons pas ce mot-clé par l'exemple
donner ci-dessous
classe étudiant
{
int id;
Chaîne nom;

student(int id,String name)


{
id = id;
nom
}
afficher()
{
[Link](id+" "+name);
}
}
Classe MyPgm
{
public static void main(String args[])
{
étudiant
étudiant
[Link]();
[Link]();
}
}

0 nul
0 nul

Dans l'exemple ci-dessus, les paramètres (arguments formels) et les variables d'instance sont
c'est pourquoi nous utilisons ce mot-clé pour faire la distinction entre la variable locale et
variable d'instance.

Préparé par Nagamahesh BS, professeur adjoint, CSE, Sai Vidya Institute of Technology neuf
Concepts Orientés Objet 15CS/IS45

Solution du problème ci-dessus par ce mot-clé


//exemple de ce mot-clé
classe Étudiant
{
int id;
Chaine nom;

student(intid,Stringname)
{
[Link]= id;
[Link]
}
void afficher()
{
[Link](id + " " + name);
}
}
Classe MyPgm
{
public static void main(String args[])
{
Étudiant s1 = new Étudiant(111, "Anoop");
Étudiant s2 = nouveau Étudiant(222,"Aryan");
[Link]();
[Link]();
}
}
Sortie111 Anoop
222 Aryan

Classe interne

Il a accès à toutes les variables et méthodes de Outerclass et peut faire référence à


directement. Mais l'inverse n'est pas vrai, c'est-à-dire que Outerclass ne peut pas
accéder directement aux membres d'Innerclass.
Une autre chose importante à noter concernant une classe interne est qu'elle peut être
créé uniquement dans le scope de Outerclass. Le compilateur Java génère un
Erreur si du code en dehors de Outerclass essaie d'instancier Innerclass.

Préparé par Nagamahesh BS, professeur adjoint, CSE, Sai Vidya Institute of Technology 10
Concepts orientés objet 15CS/IS45

Exemple de classe interne


classe Extérieure

{
public void afficher()
{
Inner in=new Inner();
[Link]();
}

classe Interne
{
public void montrer()
{
[Link]("À l'intérieur de l'intérieur");

}
}
}

classe Test
{
public static void main(String[] args)
{
Outer ot=new Outer();
[Link]();
}
}

À l'intérieur intérieur

Collecte des ordures

En Java, la destruction des objets de la mémoire est effectuée automatiquement par la JVM.

Lorsqu'il n'y a aucune référence à un objet, cet objet est alors supposé être non

plus besoin et les souvenirs occupés par l'objet sont libérés. Ceci
Cette technique s'appelle la collecte des ordures. Cela est accompli par la JVM.

Préparé par Nagamahesh BS, Professeur adjoint, CSE, Institut de Technologie Sai Vidya 11
Concepts de la programmation orientée objet 15CS/IS45

La collecte des déchets peut-elle être forcée explicitement ?

Non, la collecte des déchets ne peut pas être forcée explicitement. Nous pouvons demander à la JVM de

la collecte des ordures en appelant la méthode [Link](). Mais cela ne garantit pas que

La JVM effectuera la collecte des déchets.

Avantages de la collecte des ordures

Le programmeur n'a pas besoin de s'inquiéter de la déréférencement d'un objet.

2. C'est fait automatiquement par la JVM.

3. Augmente l'efficacité de la mémoire et diminue les risques de fuite de mémoire.

méthode finalize()

Parfois, un objet devra effectuer une tâche spécifique avant d'être détruit.

comme fermer une connexion ouverte ou libérer toute ressource détenue. Pour gérer cela
La méthode situationfinalize() est utilisée. La méthode finalize() est appelée par le ramasse-miettes.

fil avant de collecter l'objet. C'est la dernière chance pour tout objet d'effectuer

outil de nettoyage.

Signature de la méthode finalize()

protected void finaliser()

//finaliser-code

Préparé par Nagamahesh BS, professeur adjoint, CSE, Sai Vidya Institute of Technology 12
Concepts orientés objet 15CS/IS45

Méthode gc()

La méthode gc() est utilisée pour appeler explicitement le collecteur de déchets. Cependant, la méthode gc() ne fait pas ...

ne garantit pas que la JVM effectuera la collecte des déchets. Elle ne fait que demander le

JVM pour la collecte des déchets. Cette méthode est présente dans la classe System et Runtime.

Exemple pour la méthode gc()


classe publique Test
{

public static void main(String[] args)


{
Test t = new Test();
null
[Link]();
}
public void finaliser()
{
Systè[Link]("Déchets collectés");
}
}

Sortie :

Ramassé des ordures

Préparé par Nagamahesh BS, Professeur adjoint, CSE, Institut de Technologie Sai Vidya 13
Concepts orientés objet 15CS/IS45

Héritage

Comme son nom l'indique, l'héritage signifie prendre quelque chose qui est

déjà fait. C'est l'une des caractéristiques les plus importantes de l'Objet

Programmation orientée objet. C'est le concept utilisé pour la réutilisabilité.

but

L'héritage est le mécanisme par lequel nous pouvons dériver des classes

d'autres classes.

La classe dérivée est appelée classe enfant ou sous-classe ou nous pouvons dire

la classe étendue et la classe à partir de laquelle nous dérivons


La sous-classe est appelée la classe de base ou la classe parente.

Pour dériver une classe en Java, le mot-clé extends est utilisé. Le suivant

Quels types d'héritage existe-t-il en Java.

Types d'héritage

1. Héritage simple/niveau unique

2. Héritage multilevel
3.Héritage multiple (Java ne prend pas en charge l'héritage multiple)

mais nous pouvons y parvenir grâce au concept d'Interface.)

Représentation picturale de l'héritage simple et multi-niveaux

Héritage simple Hérédité multilevel

Préparé par Nagamahesh BS, Professeur adjoint, CSE, Institut de technologie Sai Vidya 14
Concepts orientés objet 15CS/IS45

Héritage simple/monovalent

Lorsqu'une sous-classe est dérivée simplement de sa classe parente, alors cela

mécanisme est connu sous le nom d'héritage simple. Dans le cas de l'héritage simple

héritage il n'y a qu'une sous-classe et sa classe parent. C'est aussi

appelé héritage simple ou héritage à un niveau.

Exemple

classeA
{
intx;
inty;
intget(intp, intq)
{
x=p;
y=q;
return(0);
}
voidShow()
{
[Link](x);
}
}
classBextendsA
{
public static void main(String args[])
{
A a = newA();
[Link](5,6);
[Link]();
}
voiddisplay()
{
[Link]("y"); //hérité de “y” de la classe A
}
}

Préparé par Nagamahesh BS, Professeur adjoint, CSE, Sai Vidya Institute of Technology 15
Concepts orientés objet 15CS/IS45

La syntaxe pour créer une sous-classe est simple. Au début de votre classe
déclaration, utilisez le mot-clé extends, suivi du nom de la classe pour
hériter de :

classe A
{

classeBétendA //B est une sous-classe de la super classe A.


{

Héritage multiniveau

Lorsqu'une sous-classe est dérivée d'une classe dérivée, alors ce mécanisme

est connu sous le nom d'héritage multi-niveaux.

La classe dérivée est appelée la sous-classe ou classe enfant par rapport à sa classe parente.

la classe et cette classe parente fonctionne comme la classe enfant car elle est juste au-dessus

( parent ) classe.
L'héritage multilevel peut aller jusqu'à n'importe quel nombre de niveaux.

classe A
{
int x;
int y;
int obtenir(int p, int q)
{
x=p;
y=q;
return(0);
}
void Afficher()
{
[Link](x);
}
}

Préparé par Nagamahesh BS, Professeur Assistant, CSE, Institut de Technologie Sai Vidya 16
Concepts orientés objet 15CS/IS45

classe B étend A
{
void Afficherb()
{
[Link]("B");
}
}

classe C étend B
{
afficher()
{
[Link]("C");
}
public static void main(String args[])
{
A a = new A();
[Link](5,6);
[Link]();
}
}
SORTIE
5

Héritage multiple

Le mécanisme d'héritage des caractéristiques de plus d'une classe de base dans une
une seule classe est connue sous le nom d'héritage multiple. Java ne prend pas en charge l'héritage multiple.

l'héritage mais l'héritage multiple peut être réalisé en utilisant le

interface.

Ici, vous pouvez dériver une classe de n'importe quel nombre de classes de base. Dériver un

Une classe ayant plus d'une classe de base directe est appelée héritage multiple.

Préparé par Nagamahesh BS, professeur assistant, CSE, Institut de Technologie Sai Vidya 17
Concepts orientés objet 15CS/IS45

Java ne prend pas en charge l'héritage multiple

En Java, l'héritage multiple peut être réalisé par l'utilisation d'interfaces par

implémenter plus d'une interface dans une classe.

mot-clé super

Le super est un mot-clé java. Comme son nom l'indique, super est utilisé pour accéder au

membres de la super classe. Il est utilisé à deux fins en java.


La première utilisation du mot-clé super est d'accéder aux variables de données cachées du

super classe masquée par la sous-classe.

Exemple : Supposons que la classe A soit la super classe qui a deux variables d'instance.

en tant que int a et float b. la classe B est la sous-classe qui contient également ses propres membres de données

appelés a et b. ensuite, nous pouvons accéder aux variables de la super classe (classe A) a et b à l'intérieur

la sous-classe classe B simplement en appelant la commande suivante.

[Link];

Ici, un membre peut être soit une variable d'instance, soit une méthode. Cette forme de

super utile pour gérer des situations où les membres locaux d'un

La sous-classe cache les membres d'une superclasse ayant le même nom. Le

l'exemple suivant clarifie toutes les confusions.

Préparé par Nagamahesh BS, Professeur associé, CSE, Institut de Technologie Sai Vidya 18
Concepts orientés objet 15CS/IS45

Exemple :

classeA
{
inta;
floatb;
voidShow()
{
[Link]("b dans la super classe : " + b);
}

}
classBextendsA
{
inta;
flottantb;
B(intp,floatq)
{
a = p;
super.b = q;
}
voidShow()
{
[Link]();
[Link]("b dans la super classe : " + super.b);
[Link]("a dans la sous-classe : " + a);
}
}

classe Mypgm
{
public static void main(String[] args)
{
B subobj = new B(1, 5);
[Link]();
}
}
SORTIE
b dans la super classe : 5.0
b dans la super classe : 5.0
a dans la sous-classe : 1

Préparé par Nagamahesh BS, Professeur adjoint, CSE, Sai Vidya Institute of Technology 19
Concepts orientés objet 15CS/IS45

Utilisation de super pour appeler le constructeur de la classe parente : La deuxième utilisation du mot-clé

super en java est utilisé pour appeler le constructeur de la classe parente dans la sous-classe. Cette fonctionnalité peut

peut être atteint simplement en utilisant la commande suivante.

super(liste-de-paramètres);

Ici, la liste des paramètres est la liste des paramètres requis par le constructeur.

dans la super classe. super doit être la première instruction exécutée à l'intérieur d'un

constructeur de super classe. Si nous voulons appeler le constructeur par défaut, alors nous

transmettez la liste de paramètres vide. Le programme suivant illustre l'utilisation de

le mot-clé super pour appeler le constructeur de la super classe.

Exemple :

classeA
{
inta;
intb;
intc;
A(intp,intq,intr)
{
a=p;
b=q;
c=r;
}
}

classeBétendA
{
intd;
B(intl,intm,intn,into)
{
super(l,m,n);
d=o;
}

voidShow()

Préparé par Nagamahesh BS, professeur adjoint, CSE, Sai Vidya Institute of Technology 20
Concepts orientés objet 15CS/IS45

{
[Link]("a = " + a);
[Link]("b = " + b);
[Link]("c = " + c);
[Link]("d = " + d);
}
}
classe Mypgm
{
public static void main(String args[])
{
B b =newB(4,3,8,7);
[Link]();
}
}
SORTIE
a=4
b=3
c=8
d=7

Surcharge de méthodes

La redéfinition de méthode en Java signifie qu'une méthode de sous-classe redéfinit une méthode de super-classe.

méthode.
La méthode de la superclasse doit être non statique. La sous-classe utilise le mot-clé extends pour

étendre la super classe. Dans l'exemple, la classe Bis est la sous-classe et la classe A

est la super classe. En remplaçant les méthodes à la fois de la sous-classe et de la super classe

possèdent les mêmes signatures. Le remplacement est utilisé pour modifier les méthodes de

la super classe. En remplaçant les types de retour et les paramètres de constructeur de

les méthodes doivent correspondre.

L'exemple ci-dessous illustre la substitution de méthode en Java.

Exemple :

Préparé par Nagamahesh BS, Professeur Associé, CSE, Sai Vidya Institute of Technology 21
Concepts de la programmation orientée objet 15CS/IS45

classe A
{
int i;
A(int a, int b)
{
i = a + b;
}
void ajouter()
{
[Link]("La somme de a et b est : " + i);
}
}
classe B étend A
{
int j;
B(int a, int b, int c)
{
super(a, b);
j=a+b+c;

}
void ajouter()
{
[Link]();
[Link]("La somme de a, b et c est : " + j);
}
}
classe SurchargeDeMéthode
{
public static void main(String args[])
{
B b = new B(10, 20, 30);
[Link]();
}
}
SORTIE
La somme de a et b est : 30
La somme de a, b et c est : 60

Préparé par Nagamahesh BS, Professeur adjoint, CSE, Institut de Technologie Sai Vidya 22
Concepts orientés objet 15CS/IS45

Surcharge de méthode

Deux ou plusieurs méthodes ont les mêmes noms mais des listes d'arguments différentes.

Les arguments peuvent différer en type ou en nombre, ou les deux. Cependant, le retour

Les types de méthodes surchargeées peuvent être les mêmes ou différents, cela s'appelle une méthode.

surcharge. Un exemple de la surcharge de méthode est donné ci-dessous :

Exemple :

classe SurchargeDeMéthode
{
int ajouter(int a, int b)
{
return(a+b);
}
flottant ajouter(flottant a, flottant b)

{
return(a+b);
}
double ajouter(int a, double b, double c)
{
retourner(a+b+c);
}
}
classe MainClass
{
public static void main( String arr[] )
{
mobj = nouvelle MéthodeSurcharge();
[Link]([Link](50,60));
[Link]([Link](3.5f, 2.5f));
[Link]([Link](10,30.5,10.5));
}
}
SORTIE
110
6.0
51,0

Préparé par Nagamahesh BS, Professeur Assistant, CSE, Institut de Technologie Sai Vidya 23
Concepts orientés objet 15CS/IS45

Classe abstraite

Le mot-clé abstrait est utilisé pour rendre une classe abstraite.

Une classe abstraite ne peut pas être instanciée avec l'opérateur new.
Nous pouvons utiliser le mot-clé abstrait pour créer une méthode abstraite ; une abstraite

la méthode n'a pas de corps.


Si les classes ont des méthodes abstraites, alors la classe doit également être rendue

utiliser le mot-clé abstrait, sinon cela ne compilera pas.


Les classes abstraites sont utilisées pour fournir une implémentation de méthode commune à tous

les sous-classes ou fournir une implémentation par défaut.

Exemple de programme :

classeAbstraite ZonePgm
{
double dim1, dim2;
ZonePgm(double x,double y)
{
x
y;
}
double abstrait surface();
}
classe rectangle étend AreaPgm
{
rectangle(double a,double b)
{
super(a,b);
}
double aire()
{
[Link]("Aire du rectangle");
return dim1*dim2;
}
}
classe triangle étend figure
{
triangle(double x,double y)
{
super(x,y);

Préparé par Nagamahesh BS, Professeur adjoint, CSE, Institut de Technologie Sai Vidya 24
Concepts orientés objet 15CS/IS45

}
double surface()
{
[Link]("Aire du Triangle");
retourne dim1*dim2/2;
}
}
classe MonPgm
{
public static void main(String args[])
{

AreaPgm a=new AreaPgm(10,10); // erreur, AreaPgm est une classe abstraite.

rectangle r=new rectangle(10,5);


[Link]("Aire="+[Link]());

triangle t=new triangle(10,8);


ZonePgm ar;
obj
[Link]("Surface="+[Link]());
}
}

mot-clé final en Java

Le mot clé final en java est utilisé pour restreindre l'utilisateur. Le mot clé final peut être
utilisé dans de nombreux contextes. Final peut être :

1. variable
2. méthode
3. classe

1) variable finale : Si vous déclarez une variable comme finale, vous ne pouvez pas changer sa valeur.

variable finale (ce sera constant).

Il y a une variable finale speedlimit, nous allons changer la valeur de


cette variable, mais elle ne peut pas être modifiée car la variable finale, une fois qu'elle a reçu une valeur

ne peut jamais être changé.

Préparé par Nagamahesh BS, Professeur adjoint, CSE, Institut de Technologie Sai Vidya 25
Concepts orientés objet 15CS/IS45

classe Vélo
{
int limitespeed=90; // variable finale
void exécuter()

{
limite de vitesse=400;
}
}
Classe MyPgm
{
public static void main(String args[])
{
Vélo obj=new Vélo();
[Link]();
}
}
Erreur de compilation

2) méthode finale : Si vous déclarez une méthode comme finale, vous ne pouvez pas la redéfinir.

Exemple :

classe Vélo
{
finalvoid exécuter()

{
[Link]("en cours d'exécution");
}
}
classe Honda étend Vélo
{
void run()
{
[Link]("rouler en toute sécurité à 100 km/h");
}
}

Préparé par Nagamahesh BS, Professeur adjoint, CSE, Institut de technologie Sai Vidya 26
Concepts orientés objet 15CS/IS45

Classe MyPgm
{
public static void main(String args[])
{
Honda honda = new Honda();
[Link]();
}
}
Erreur de compilation

3) classe finale : Si vous faites une classe finale, vous ne pouvez pas l'étendre.

Exemple :

classe finale Vélo


{

classe Honda étend Moto


{
void exécuter()

{
[Link]("rouler en toute sécurité à 50 km/h");
}
}

Classe MyPgm
{

public static void main(String args[])


{
Honda honda= new Honda();
[Link]();
}
}
Erreur de compilation

Préparé par Nagamahesh BS, Professeur adjoint, CSE, Institut de Technologie Sai Vidya 27
Concepts orientés objet 15CS/IS45

Gestion des exceptions :

Introduction

Une exception, elle peut être définie comme un événement anormal qui se produit pendant le programme.

exécution et perturbe le flux normal des instructions. L'événement anormal peut être

une erreur dans le programme.

Les erreurs dans un programme Java sont classées en deux groupes :

Les erreurs de compilation se produisent lorsque vous ne suivez pas la syntaxe d'un

langage de programmation.

Les erreurs d'exécution se produisent pendant l'exécution d'un programme.

Concepts d'exceptions

Une exception est une erreur d'exécution qui se produit pendant l'exécution d'un programme Java.

programme.

Exemple : Si vous divisez un nombre par zéro ou ouvrez un fichier qui n'existe pas, un

une exception est levée.

En Java, les exceptions peuvent être gérées soit par le système d'exécution Java, soit par un utilisateur.

code défini. Lorsqu'une erreur d'exécution se produit, une exception est levée.

Les situations inattendues qui peuvent survenir lors de l'exécution du programme sont :

Mémoire insuffisante
Erreurs d'allocation des ressources

Incapacité à trouver des fichiers

Problèmes de connectivité réseau

Préparé par Nagamahesh BS, Professeur associé, CSE, Sai Vidya Institute of Technology 28
Concepts orientés objet 15CS/IS45

Techniques de gestion des exceptions :

La gestion des exceptions en Java est assurée par cinq mots-clés :

1. essayer :

attraper.

3. lancer.

4. lance.

5. enfin.

Syntaxe de déclaration de gestion des exceptions

Les exceptions sont gérées en utilisant une construction try-catch-finally, qui a la syntaxe.

essayer
{

}
attraper (<type d'exception1> <paramètre1>)
{
// 0 ou plusieurs <déclarations>

}
enfin
{
// bloc finally<instructions>
}

1. essayer Bloc : Le code java que vous pensez pouvoir produire une exception est placé

dans un bloc try pour un bloc catch approprié afin de gérer l'erreur.

Si aucune exception ne se produit, l'exécution se poursuit avec le bloc finally, sinon cela

recherche le bloc catch correspondant pour gérer l'erreur.

Préparé par Nagamahesh BS, Professeur adjoint, CSE, Institut de Technologie Sai Vidya 29
Concepts Orientés Objet 15CS/IS45

Encore une fois, si le gestionnaire d'exception correspondant n'est pas trouvé, l'exécution se poursuit avec

le bloc finally et le gestionnaire d'exception par défaut lèvent une exception.

2. bloc catch : Les exceptions levées lors de l'exécution du bloc try peuvent être interceptées

et traité dans un bloc catch. À la sortie d'un bloc catch, l'exécution normale

se poursuit et le bloc finally est exécuté (Bien que le bloc catch lance un

exception).

3. Bloc finally : Un bloc finally est toujours exécuté, indépendamment de la cause de la sortie.

du bloc try, ou si un bloc catch a été exécuté. En général enfin


Le bloc est utilisé pour libérer des ressources, nettoyer, fermer des connexions, etc.

Exemple :

Le tableau suivant est déclaré avec 2 éléments. Ensuite, le code essaie d'accéder à

le 3rdélément du tableau qui lance une exception.

[Link]
importer [Link].*;
classe publique ExcepTest
{
public static void main(String args[])
{
essayer
{
int a[] = new int[2];
[Link]("Accéder à l'élément trois :" + a[3]);
}
attraper(ArrayIndexOutOfBoundsException e)
{
[Link]("Exception levée :" + e);
}
[Link]("Hors du bloc");
}
}

Préparé par Nagamahesh BS, professeur assistant, CSE, Sai Vidya Institute of Technology 30
Concepts orientés objet 15CS/IS45

Cela produirait le résultat suivant :

Exception levée : [Link] : 3


Hors du bloc

Blocs de capture multiples :

Un bloc try peut être suivi de plusieurs blocs catch. La syntaxe pour plusieurs catch
les blocs ressemblent à ce qui suit :

essayer
{
// code
}
attraper(ExceptionType1 e1)
{
//Bloc catch
}
attraper(ExceptionType2 e2)
{
//Bloc catch
}
attraper(ExceptionType3 e3)
{
//Bloc catch
}

Les déclarations précédentes démontrent trois blocs catch, mais vous pouvez en avoir n'importe quel.

nombre d'entre eux après une seule tentative.

Préparé par Nagamahesh BS, Professeur adjoint, CSE, Sai Vidya Institute of Technology 31
Concepts orientés objet 15CS/IS45

Voici un segment de code montrant comment utiliser plusieurs try/catch

déclarations.

classe Multi_Catch
{
public static void main (String args [])
{

essayer
{
int a=[Link];
[Link]("a="+a);
int b=50/a;
int c[]={1}
}
attraper (ArithmeticException e)
{
[Link]("Division par zéro");
}

attraper (ArrayIndexOutOfBoundsException e)
{
[Link]("index de tableau hors limites");
}
}
}

SORTIE
Division par zéro
index de tableau hors limites

Instructions try imbriquées

Tout comme les multiples blocs catch, nous pouvons également avoir plusieurs blocs try.

Ces blocs try peuvent être écrits indépendamment ou nous pouvons imbriquer les blocs try.

à l'intérieur les uns des autres, c'est-à-dire, garder un bloc try-catch à l'intérieur d'un autre bloc try.

La structure du programme pour l'instruction try imbriquée est :

Préparé par Nagamahesh BS, Professeur assistant, CSE, Institut de technologie Sai Vidya 32
Concepts orientés objet 15CS/IS45

Syntaxe

essayer
{
// déclarations
// déclarations

essayer
{
// déclarations
déclarations
}
attraper (<exception_two> obj)
{
déclarations
}

// déclarations
// déclarations
}
attraper (<exception_two> obj)
{
// déclarations
}

Considérez l'exemple suivant dans lequel vous acceptez deux nombres de


la ligne de commande. Après cela, les arguments de ligne de commande, qui sont dans le

les chaînes de format sont converties en entiers.

Si les chiffres n'étaient pas reçus correctement dans un format numérique, alors pendant

la conversion d'une NumberFormatException est levée sinon le contrôle


passe au prochain bloc try. À l'intérieur de ce deuxième bloc try-catch, le premier

le nombre est divisé par le deuxième nombre, et pendant le calcul, si


s'il y a une erreur arithmétique, elle est interceptée par le bloc catch interne.

Préparé par Nagamahesh BS, professeur assistant, CSE, Sai Vidya Institute of Technology 33
Concepts Orientés Objet 15CS/IS45

Exemple

class Nested_Try
{
public static void main (String args [ ] )
{
essayer
{
int a = [Link](args[0]);
int b = [Link](args[1]);
int quot = 0;

essayer
{
quot = a / b;
[Link](quot);
}
attraper (ArithmeticException e)
{
[Link]("diviser par zéro");
}
}
attraper (NumberFormatException e)
{
[Link]("Type d'argument incorrect");
}
}
}

La sortie du programme est : Si les arguments sont saisis correctement dans le


invite de commandes comme :

SORTIE
java Essai_Niché 2 4 6
4

Si l'argument contient une chaîne de caractères alors le nombre :

Préparé par Nagamahesh BS, Professeur adjoint, CSE, Institut de technologie Sai Vidya 34
Concepts orientés objet 15CS/IS45

SORTIE
java Essayer_Niché 2 4 aa
Type d'argument incorrect

Si le deuxième argument est entré à zéro :

SORTIE
java Essai_Imbriqué 2 4 0
diviser par zéro

mot-clé throw

le mot-clé throw est utilisé pour lancer une exception de manière explicite. Seul un objet de

La classe Throwable ou ses sous-classes peuvent être lancées.


L'exécution du programme s'arrête lorsqu'elle rencontre une instruction throw, et le plus proche

L'instruction catch est vérifiée pour correspondre au type d'exception.

Syntaxe : jeterInstanceDeThrowable

Création d'une instance de la classe Throwable

Il existe deux façons possibles d'obtenir une instance de la classe Throwable.

1. Utiliser un paramètre dans le bloc catch.


2. Création d'une instance avec l'opérateur new.

newNullPointerException("test");

Cela construit une instance de NullPointerException avec le nom test.

Exemple démontrant le mot-clé throw

Préparé par Nagamahesh BS, professeur adjoint, CSE, Sai Vidya Institute of Technology 35
Concepts orientés objet 15CS/IS45

classe Test
{
static void moyenne()
{
essayer
{
lancer une ArithmeticException("demo");
}
attraper(ArithmeticException e)
{
[Link]("Exception attrapée");
}
}
public static void main(String args[])
{
moyenne();
}
}
Dans l'exemple ci-dessus, la méthode avg() lance une instance d'ArithmeticException.
qui est géré avec succès à l'aide de l'instruction catch.

mot-clé throws

Toute méthode capable de provoquer des exceptions doit énumérer toutes les exceptions
possible pendant son exécution, de sorte que quiconque appelle cette méthode obtienne un préalable

connaissance des exceptions à gérer. Une méthode peut le faire en utilisant


le mot-clé throws.

Syntaxe :

type nom_méthode(liste_paramètres)lance_exception_liste
{
//définition de la méthode
}

Préparé par Nagamahesh BS, professeur adjoint, CSE, Sai Vidya Institute of Technology 36
Concepts orientés objet 15CS/IS45

REMARQUE : Il est nécessaire que toutes les exceptions, sauf les exceptions de type TypeError et

RuntimeException ou l'une de leurs sous-classes.

Exemple démontrant le mot-clé throws

classe Test
{
void statique check() lance ArithmeticException
{
[Link]("À l'intérieur de la fonction de vérification");

lancer nouvelle ArithmeticException("demo");


}

public static void main(String args[])


{
essayer
{
vérifier();
}
attraper(ArithmeticException e)
{
[Link]("attrapé" + e);
}
}
}

enfin
La clause finally est écrite avec l'instruction try-catch. Il est garanti

à exécuter après un bloc catch ou avant que la méthode ne se termine.

Syntaxe

essayer
{
// déclarations
}

Préparé par Nagamahesh BS, Professeur adjoint, CSE, Sai Vidya Institute of Technology 37
Concepts de la programmation orientée objet 15CS/IS45

attraper (<exception> obj)


{
// déclarations
}
enfin
{
//déclarations
}

Jetez un œil à l'exemple suivant qui a un bloc catch et un bloc finally.

Le bloc catch attrape l'ArithmeticException qui se produit pour


erreur arithmétique comme la division par zéro. Après l'exécution du bloc catch, le

enfin est également exécuté et vous obtenez la sortie pour les deux blocs.

Exemple :

classe Bloc_Finalement
{
static void division ( )
{
essayer
{
int num = 34, den = 0;
int quot = num / den;
}
attraper(ArithmeticException e)
{
[Link]("Diviser par zéro");
}
enfin
{
[Link]("Dans le bloc finally");
}
}
classe Mypgm
{
public static void main(String args[])
{

Préparé par Nagamahesh BS, professeur adjoint, CSE, Sai Vidya Institute of Technology 38
Concepts orientés objet 15CS/IS45

Enfin_Block f=new Enfin_Block();


[Link] ( );
}
}

SORTIE
Diviser par zéro
Dans le bloc finally

Les exceptions intégrées de Java

Java définit plusieurs classes d'exception dans le paquet standard [Link].

Les exceptions les plus générales de ces types sont des sous-classes du type standard

RuntimeException. Puisque [Link] est implicitement importé dans tout Java


programmes, la plupart des exceptions dérivées de RuntimeException êtes

automatiquement disponible.

Java définit plusieurs autres types d'exceptions qui se rapportent à ses différentes classes.

bibliothèques. Voici la liste des JavaUnchecked RuntimeException.

Exception Description

ArithmeticException Erreur arithmétique, telle que la division par zéro.

ArrayIndexOutOfBoundsException L'indice du tableau est hors limites.

Affectation à un élément de tableau d'un


ArrayStoreException
type incompatible.

ClassCastException Conversion invalide.

IllegalArgumentException Argument illégal utilisé pour invoquer une méthode.

Opération de moniteur illégale, comme attendre sur un


IllegalMonitorStateException
fil déverrouillé.

Préparé par Nagamahesh BS, Professeur adjoint, CSE, Sai Vidya Institute of Technology 39
Concepts Orientés Objet 15CS/IS45

L'environnement ou l'application est incorrect


IllegalStateException
État.

Opération demandée non compatible avec


IllegalThreadStateException
État actuel du fil.

IndexOutOfBoundsException Un certain type d'index est hors limites.

NegativeArraySizeException Tableau créé avec une taille négative.

NullPointerException Utilisation invalide d'une référence nulle.

Conversion invalide d'une chaîne en numérique


NumberFormatException
format.

Exception de sécurité Tentative de violation de la sécurité.

Tentative d'indexer en dehors des limites d'un


IndexDeChaineHorsLimite
chaîne.

UnsupportedOperationException Une opération non prise en charge a été rencontrée.

Voici la liste des exceptions vérifiées Java définies dans [Link].

Exception Description

ClassNotFoundException Classe non trouvée.

Tentative de cloner un objet qui n'implémente pas


CloneNotSupportedException
l'interface Cloneable.

IllegalAccessException L'accès à une classe est refusé.

Tentative de créer un objet d'une classe abstraite ou


InstantiationException
interface.

InterruptedException Un fil a été interrompu par un autre fil.

NoSuchFieldException Un champ demandé n'existe pas.

NoSuchMethodException Une méthode demandée n'existe pas.

Préparé par Nagamahesh BS, Professeur adjoint, CSE, Institut de technologie Sai Vidya 40
Concepts orientés objet 15CS/IS45

Créer vos propres sous-classes d'exception

Ici, vous pouvez également définir vos propres classes d'exception en étendant Exception.

Ces exceptions peuvent représenter des conditions d'exécution spécifiques, bien sûr vous le ferez.

vous devez les lancer vous-même, mais une fois lancés, ils se comporteront exactement comme

exceptions ordinaires.
Lorsque vous définissez vos propres classes d'exception, choisissez l'ancêtre avec soin.

La plupart des exceptions personnalisées feront partie de la conception officielle et seront donc vérifiées.

ce qui signifie qu'ils étendent Exception mais pas RuntimeException.

Lancer une exception définie par l'utilisateur

public class MyException étend Exception


{
msg
int notes=50;
public MyException()
{
}
public MyException(String str)
{
super(str);
}
public String toString()
{
si(marques <= 40)
Vous avez échoué
si(marques > 40)
Vous avez réussi

retourner msg;

}
}

Préparé par Nagamahesh BS, professeur adjoint, CSE, Sai Vidya Institute of Technology 41
Concepts Orientés Objet 15CS/IS45

classe test
{
public static void main(String args[])
{
test t = new test();
[Link]();
}
public void ajouter()
{
essayer
{
int i=0;
si( i<40)
lancer une nouvelle MyException();

}
attraper(MyException ee1)
{
[Link]("Résultat:" + ee1);
}
}
}
SORTIE
Vous avez réussi

Exception enchaînée
Les exceptions enchaînées sont les exceptions qui se produisent les unes après les autres, c'est-à-dire

la plupart du temps, la réponse à une exception est donnée par une application par

lancer une autre exception.

Chaque fois qu'une exception dans un programme provoque une autre exception,

cela est appelé Exception Chaînée. Java fournit une nouvelle fonctionnalité pour

chaining d'exceptions.
L'enchaînement d'exceptions (également connu sous le nom de "nesting exception") est une technique pour

gérer l'exception, qui se produit l'une après l'autre, c'est-à-dire la plupart du temps

Préparé par Nagamahesh BS, Professeur Assistant, CSE, Institut de Technologie Sai Vidya 42
Concepts orientés objet 15CS/IS45

est donné par une application pour répondre à une exception en lançant une autre

exception.

Typiquement, la deuxième exception est causée par la première exception. Donc

les exceptions enchaînées aident leprogrammeursavoir quand une exception cause

un autre.

Les constructeurs qui prennent en charge les exceptions en chaîne dans la classe Throwable sont :

Throwable initCause(Throwable)

Throwable(Throwable)

Throwable(String, Throwable)

Throwable getCause()

Préparé par Nagamahesh BS, professeur adjoint, CSE, Sai Vidya Institute of Technology 43
Concepts orientés objet 15CS/IS45

Packages en JAVA

Un paquet Java est un groupe de classes, d'interfaces et de sous-types similaires.


paquets.
Le package en Java peut être catégorisé en deux formes,
paquet intégré et
package défini par l'utilisateur.

Il existe de nombreux packages intégrés tels que java, lang, awt, javax, swing, net, io, util,
sql etc.

Avantage du Package Java

1) Le paquet Java est utilisé pour classer les classes et les interfaces afin qu'elles puissent être
facile à entretenir.

2) Le paquet Java fournit une protection d'accès.

3) Le package Java élimine les collisions de noms.

Le mot-clé package est utilisé pour créer un paquet en java.

//sauvegarder en tant que [Link]

emballemonemballage;
classe publique simple
{
public static voidmain(String args[])
{
Systè[Link]("Bienvenue dans le package");
}
}
Comment accéder à un package depuis un autre package ?

Il existe trois façons d'accéder au package depuis l'extérieur du package.

1. importer le paquet.*;
2. importer [Link];
nom complètement qualifié.

Préparé par Nagamahesh BS, professeur adjoint, CSE, Sai Vidya Institute of Technology 44
Concepts orientés objet 15CS/IS45

1) Utiliser packagename.*

Si vous utilisez package.*, alors toutes les classes et interfaces de ce paquet seront
accessible mais pas de sous-packages.

Le mot clé import est utilisé pour rendre les classes et les interfaces d'un autre package
accessible au package courant.

Exemple de paquet qui importe le packagename.*


//sauvegarder par [Link]

paquet
classe publiqueA
{
public voidmsg(){[Link]("Bonjour");}
}

//sauvegarder par [Link]

packagemypack;
importpack.*;

classeB
{
public static void main(String args[])
{
A obj =newA();
[Link]();
}
}
Bonjour

2) En utilisant [Link]

Si vous importez [Link], alors seule la classe déclarée de ce package sera


accessible.

Exemple de paquet par importation [Link]

//sauvegarder par [Link]

paquet
classe publique A
{
public void msg() { [Link]("Bonjour");

Préparé par Nagamahesh BS, Professeur adjoint, CSE, Institut de Technologie Sai Vidya 45
Concepts de la programmation orientée objet 15CS/IS45

}
}

//sauvegarder par [Link]

packagemypack
importpack.A;

classeB
{
public static void main(String args[])
{
A obj =newA();
[Link]();
}
}
Bonjour

3) Utilisation du nom complet

Si vous utilisez un nom entièrement qualifié, alors seule la classe déclarée de ce package sera
accessible. Maintenant, il n'est plus nécessaire d'importer. Mais vous devez utiliser un nom entièrement qualifié.

chaque fois que vous accédez à la classe ou à l'interface.

Il est généralement utilisé lorsque deux packages ont le même nom de classe, par exemple [Link] et
Les packages [Link] contiennent la classe Date.

Exemple de paquet par importation de nom entièrement qualifié

//enregistrer par [Link]

packagepack;
classe publique A
{
public voidmsg()
{
[Link]("Bonjour");
}
}

//enregistrer par [Link]

emballezmypack
classeB
{
public static voidmain(String args[])

Préparé par Nagamahesh BS, Professeur adjoint, CSE, Institut de Technologie Sai Vidya 46
Concepts orientés objet 15CS/IS45

{
pack.A obj = new pack.A(); //utilisant le nom complètement qualifié
[Link]();
}
}
Bonjour

Modificateurs/Spécificateurs d'accès

Les modificateurs d'accès en java spécifient l'accessibilité (portée) d'un membre de données,
méthode, constructeur ou classe.

Il existe 4 types de modificateurs d'accès en Java :

privé
2. défaut
3. protégé
4. public

1) modificateur d'accès privé


Le modificateur d'accès privé est accessible uniquement au sein de la classe.

2) modificateur d'accès par défaut

Si vous n'utilisez aucun modificateur, il est traité par défaut. Le défaut


le modificateur est accessible uniquement au sein du package.

3) modificateur d'accès protégé

Le modificateur d'accès protégé est accessible dans le package et à l'extérieur


package mais uniquement par héritage.

Le modificateur d'accès protégé peut être appliqué au membre de données, à la méthode et


Le constructeur. Il ne peut pas être appliqué à la classe.

4) modificateur d'accès public

Le modificateur d'accès public est accessible partout. Il a le champ le plus large.


parmi tous les autres modificateurs.

Préparé par Nagamahesh BS, Professeur adjoint, CSE, Institut de technologie Sai Vidya 47
Concepts orientés objet 15CS/IS45

Comprendre tous les modificateurs d'accès Java à l'aide d'un tableau simple.

Accès dans dans dehors paquet de l'extérieur


Modifier classe paquet sous-classe seulement paquet
Privé Y N N N
Par défaut Y Y N N
Protégé Y Y Y N
Public Y Y Y Y

Interface en java

Une interface en Java est un plan d'une classe. Elle a des variables statiques finales.

et méthodes abstraites.
L'interface en Java est un mécanisme pour atteindre l'abstraction. Il peut y avoir

seules les méthodes abstraites dans l'interface java ne contiennent pas de corps de méthode.

Il est utilisé pour obtenir de l'abstraction et de l'héritage multiple en Java.

Il ne peut pas être instancié tout comme une classe abstraite.

Les champs d'interface sont publics, statiques et finals par défaut, et les méthodes sont

public et abstrait.

Il y a principalement trois raisons d'utiliser une interface. Elles sont énumérées ci-dessous.

Il est utilisé pour atteindre l'abstraction.

Par interface, nous pouvons prendre en charge la fonctionnalité de l'héritage multiple.

Comprendre la relation entre les classes et les interfaces

Comme montré dans la figure ci-dessous, une classe étend une autre classe, une interface

étend une autre interface mais une classe implémente une interface.

Préparé par Nagamahesh BS, Professeur adjoint, CSE, Institut de Technologie Sai Vidya 48
Concepts Orientés Objet 15CS/IS45

Exemple 1

Dans cet exemple, l'interface Printable n'a qu'une seule méthode, son implémentation est
fourni dans la classe Pgm1.

interface imprimable
{
void imprimer();
}

classe Pgm1 implémente imprimable


{
public void imprimer()
{
Systè[Link]("Bonjour");
}
}

classe IntefacePgm1
{
public static void main(String args[])
{
Pgm1 obj = nouveau Pgm1();
[Link]();
}
}

Préparé par Nagamahesh BS, professeur assistant, CSE, Institut de Technologie Sai Vidya 49
Concepts orientés objet 15CS/IS45

translated

Bonjour

Exemple 2

Dans cet exemple, l'interface Drawable n'a qu'une seule méthode. Son implémentation est

fourni par les classes Rectangle et Cercle. Dans un scénario réel, l'interface est définie par

quelqu'un mais l'implémentation est fournie par différents fournisseurs d'implémentation.

Et, il est utilisé par quelqu'un d'autre. La partie implémentation est cachée par l'utilisateur.

qui utilise l'interface.

//Déclaration d'interface : par le premier utilisateur

interfaceDesservable
{
voiddessiner();
}
//Implémentation : par le deuxième utilisateur

classeRectangleimplémenteDessinnable
{
public void dessiner()
{
[Link]("dessiner un rectangle");
}
}

classCircleimplémenteDrawable
{
public voidtirer()
{
[Link]("dessin d'un cercle");
}
}

Préparé par Nagamahesh BS, Professeur adjoint, CSE, Institut de Technologie Sai Vidya 50
Concepts orientés objet 15CS/IS45

//Utiliser l'interface : par un troisième utilisateur

interfaceDeTestDeClasse1
{
public static void main(String args[])
{
//Dans un scénario réel, l'objet est fourni par une méthode, par exemple getDrawable()
Drawable d=newCircle();

[Link]();
}
}

Sortie :

dessiner un cercle

Héritage multiple en Java par interface

Si une classe implémente plusieurs interfaces, ou qu'une interface étend plusieurs


interfaces c'est-à-dire connu sous le nom d'héritage multiple.

Préparé par Nagamahesh BS, Professeur associé, CSE, Sai Vidya Institute of Technology 51
Concepts de programmation orientée objet 15CS/IS45

Exemple

interfaceImprimable
{
voidprint();
}

interfaceAffichable
{
afficher();
}

classePgm2implémenteImprimable,Montrable
{
public void imprimer()
{
[Link]("Bonjour");
}

public void afficher()


{
[Link]("Bienvenue");
}
}

Classe InterfaceDemo
{
publique statique vide main(String args[])
{
Pgm2 obj = nouveau Pgm2();
[Link]();
[Link]();
}
}

Bonjour
Bienvenue

Préparé par Nagamahesh BS, Professeur assistant, CSE, Sai Vidya Institute of Technology 52
Concepts Orientés Objet 15CS/IS45

L'héritage multiple n'est pas pris en charge par les classes en Java mais il l'est.

possible par interface, pourquoi ?

Comme nous l'avons expliqué dans le chapitre sur l'héritage, l'héritage multiple n'est pas

soutenu en cas de classe en raison de l'ambiguïté.


Mais cela est pris en charge en cas d'interface car il n'y a pas d'ambiguïté comme

l'implémentation est fournie par la classe d'implémentation. Par exemple :

Exemple

interfaceImprimable
{
voidprint();
}

interfaceAffichable
{
voidprint();
}

classeInterfacePgm1implémenteImprimable, Affichable
{
publique voidprint()
{
[Link]("Bonjour");
}
}
classe InterfaceDemo
{
public static void main(String args[])
{
InterfacePgm1 obj = new InterfacePgm1();
[Link]();
}
}

Sortie :

Bonjour

Préparé par Nagamahesh BS, Professeur associé, CSE, Institut de Technologie Sai Vidya 53
Concepts orientés objet 15CS/IS45

Comme vous pouvez le voir dans l'exemple ci-dessus, les interfaces Printable et Showable ont

mêmes méthodes mais son implémentation est fournie par la classe TestTnterface1,

il n'y a donc pas d'ambiguïté.

Héritage d'interface

Une classe implémente une interface mais une interface étend une autre interface.

interfaceImprimable
{
voidprint();
}

interfaceAfficherétendImprimable
{
voidshow();
}

classInterfacePgm2implementsShowable
{
public voidimprimer()
{
[Link]("Bonjour");
}
publique voidshow()
{
[Link]("Bienvenue");
}

Classe InterfaceDemo2
{
public static void main(String args[])
{
InterfacePgm2 obj = new InterfacePgm2();
[Link]();
[Link]();
}
}

Output

Bonjour
Bienvenue

Préparé par Nagamahesh BS, Professeur adjoint, CSE, Institut de Technologie Sai Vidya 54
Concepts orientés objet 15CS/IS45

Programme pour implémenter une pile


classe publique StackDemo
{
private static final int capacité = 3;
int arr[] = new int[capacité];
int sommet = -1;

public void push(int pushedElement)


{
si (haut < capacité - 1)
{
top++;
arr[top] = élémentPoussé;
[Link]("L'élément " + pushedElement + " est poussé dans la pile !")
;
imprimerÉléments();
}
sinon
{
[Link]("Dépassement de pile !");
}
}

public void dépiler()


{
si (haut >= 0)
{
haut--;
L'opération de dépilage est terminée !
}
sinon
{
[Link]("Dépassement de pile !");
}
}

public void imprimerÉléments()


{
si (haut >= 0)
{
[Link]("Éléments dans la pile :");
pour (int i = 0; i <= haut; i++)
{
[Link](arr[i]);
}

Préparé par Nagamahesh BS, Professeur adjoint, CSE, Institut de Technologie Sai Vidya 55
Concepts orientés objet 15CS/IS45

}
}

classe MonPgm
{

public static void main(String[] args)


{
StackDemo stackDemo = new StackDemo();

[Link]();
[Link](23);
[Link](2);
[Link](73);
[Link](21);
[Link]();
[Link]();
[Link]();
[Link]();
}

Résultat

Préparé par Nagamahesh BS, Professeur adjoint, CSE, Sai Vidya Institute of Technology 56
Concepts orientés objet 15CS/IS45

Questions

1. Distinguer entre la surcharge de méthodes et la méthode


surcharge en JAVA, avec des exemples appropriés. (Jan 2014) 6 marques
2. Qu'est-ce que super ? Expliquez l'utilisation de super avec un exemple approprié.

(Jan 2014) 6 marques


3. Écrivez un programme JAVA pour mettre en œuvre les opérations de pile.

(Janv 2014) 6 points


4. What is an Exception? Give an example for nested try
déclarations? (Jan 2013) 6 Marqués
5. WAP en java pour implémenter une pile qui peut contenir 10 entiers
valeurs (janv. 2013) 6 marques
6. Que signifie le masquage de variable d'instance ? Comment y remédier ?

(Jan 2013) 04 Marques


7. Définir une exception. Démontrer le fonctionnement des blocs try imbriqués.

avec un exemple approprié ? (Déc 2011)08Marks

8. Écrivez des notes courtes sur (Déc 2011)04Marques


classe finale

9. Écrivez un programme Java pour trouver la surface et le volume d'une pièce.

Utilisez une classe de base rectangle avec un constructeur et une méthode pour

trouver la surface. Utilisez sa sous-classe chambre avec un constructeur qui

obtient la valeur de la longueur et de la largeur de la classe de base et

a une méthode pour trouver le volume. Créez un objet de la classe


chambre et obtenir la superficie et le volume. (Jan-2006) 8 Marques

[Link] i) Variables d'instance ii) Variables de classe iii) Local


variables (Jan-2009) 06 points

Préparé par Nagamahesh BS, Professeur adjoint, CSE, Institut de Technologie Sai Vidya 57
Concepts orientés objet 15CS/IS45

11. Faites la différence entre la surcharge de méthode et la méthode


surcharger ? Comment Java décide-t-il quelle méthode appeler ?

(Jan-2008-8Points) 6Points
12. Expliquez ce qui suit avec un exemple.
Surcharge de méthode

13. Écrire un programme Java pour trouver la distance entre deux points
dont les coordonnées sont données. Les coordonnées peuvent être 2-

dimensionnel ou tridimensionnel (pour comparer la distance)


entre un point 2D et un point 3D, le point 3D, les coordonnées 3D x et y

les composants doivent être divisés par z). Démontrer la méthode

la substitution dans ce programme. (Mai-2007)10 points


14. Qu'est-ce qu'une interface ? Écrivez un programme pour illustrer plusieurs

héritage utilisant des interfaces. (Jan-2010) 8Marks


15. Expliquer les packages en java.
16. Qu'est-ce que les spécificateurs d'accès ? Expliquez avec un exemple.

17. Avec un exemple, expliquez le mot-clé static en Java.


18. Pourquoi Java ne supporte-t-il pas le concept d'héritage multiple ?

Justifiez avec un exemple de programme.


19. Rédigez une courte note sur :

ce mot-clé
2. mot-clé super
3. mot-clé final
4. résumé
20. Illustrer les constructeurs avec un programme exemple

Préparé par Nagamahesh BS, professeur associé, CSE, Sai Vidya Institute of Technology 58

Vous aimerez peut-être aussi