0% ont trouvé ce document utile (0 vote)
30 vues49 pages

Cours Complet sur le Langage Java 8

Le document décrit les concepts de base de la programmation orientée objet en Java tels que les classes, les objets, les attributs, les méthodes, les constructeurs, les encapsulations, les chaines de caractères et les tableaux.

Transféré par

Nessrine Lafhal
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)
30 vues49 pages

Cours Complet sur le Langage Java 8

Le document décrit les concepts de base de la programmation orientée objet en Java tels que les classes, les objets, les attributs, les méthodes, les constructeurs, les encapsulations, les chaines de caractères et les tableaux.

Transféré par

Nessrine Lafhal
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

Langage JAVA

Noreddine Gherabi
Introduction

2
Objet

3
Objet

4
Classe

Person p1=new Person() =====instanciation

5
Classe

Person p1=new Person() =====instanciation


Person p2=new Person()
Classe
Classe
Implémentation de la classe « voiture » :

getters

setters
Classe

des attribues
globales pour tout
les methodes de la
classe
Attributs et variables
Instanciation de la classe
Etats des objets
Affectation et comparaison

if(p1==p2){}
Création d’objet

constructeur
Création d’objet
Constructeur
Constructeur
Constructeur
Construire une voiture de 7CV
Constructeur sans argument
Constructeur sans argument
Getters / Setters

Setters modification

Pour générer les setters :

21
Getters / Setters
Soit la classe Personne :

Pour générer les setters sur Eclipse :

22
Getters / Setters
Utilisation de Setters

public class Main {


public static void main(String[] args) {

Personne personne = new Personne();


[Link](1);
[Link]( ’’Anouari ’’);
[Link]( ’’Said’’);

[Link](personne);
}
}

Résultat :
Personne [num=1, nom=Anouari, prenom=Said]

23
Getters / Setters

Getters get==return

public class Main {


public static void main(String[] args) {
Personne personne = new Personne();
[Link](1);
[Link](‘’Anouari’’);
[Link]( ’’Said’’);
[Link]([Link]() + " " + personne.
getNom() + " " + [Link]());
}}

24
Accès aux membres

q Accès aux membres d’un objet : [Link] [Link]="ahmed"


❙ Attention, objet est une référence [Link]="lafhal"
❙ Exemple : [Link] est le nom de la personne p. [Link]=14
q Appeler/exécuter une méthode : [Link](param);
❙ Cela signifie que l’on exécute methode(parametres)
❙ Les méthodes s’exécutent sur un objet [Link](ilyass,karimi)
❙ [Link]() signifie [Link](1,5000)
❘On cherche la classe de p : c’est la classe Personne
❘On cherche si une méthode affiche() existe dans la classe Personne:
•si elle n’existe pas, erreur de compilation « Cannot find Symbol »

25
Paramètre this
pour acceder a des attribue
Méthodes existantes

❚ Toutes les classes JAVA héritent de la classe de base Object, qui contient :
❚ Pour l’affichage : toString() public String toString() {
❙ Doit retourner une représentation textuelle de l’objet return "Compte numero " + [Link] +
" : proprietaire " + [Link] +
❙ Elle est utilisée par [Link] ", montant " + [Link];
❚ Pour les tests d’égalité : equals() }
❙ a==b ne test pas si les objets a et b sont identiques mais si a et b regarde le même objet, il faut définir le test
d’égalité avec la méthode equals pour comparer deux objets on pose [Link](b)
Exemple : public boolean equals(Point b) {
class Point { return( x==b.x && y==b.y);
private double x; }

private double y;
/* Constructeur : quelles sont les valeurs initiales d'un point */
public Point (double a, double b) {[Link]("C1"); x = a; y = b;}
public Point () { [Link]("Constructeur 2"); x = 0; y = 0; }
public Point (Point a) { [Link]("Cons 3"); x = a.x; y = a.y; }

public String toString() {return("abscisse:"+x+" ordonnée:"+y);}


// Avec cette methode, on peut afficher point avec [Link](a)
public boolean equals(Point b) {return( x==b.x && y==b.y); }
};

27
Exercice

Soit un point définit par les cordonnées x et y

1. Définir une classe Point avec les deux attributs X et Y


2. Définir un constructeur avec les deux paramètres
3. Définir un constructeur avec un Point
4. Définir les getters et les setters des attributs X et Y
5. Définir une méthode Translation qui permet de déplacer un
point par des valeurs (a,b)
6. Définir la même méthode qui déplace un point mais cette
fois à partir d’un autre point existant
7. Redéfinir les méthodes equals et toString
8. Tester votre code

28
Encapsulation getters +setters

on ne peut pas acceder a des attribues private sauf par des methodes par exemple getters et setters

L'encapsulation est une manière de définir une classe de telle


sorte que ses attributs ne puisse pas être directement
manipulés de l'extérieur de la classe, mais seulement
indirectement par l'intermédiaire des méthodes.

29
Accès et protection

Les membres déclarés avec les modificateurs :


v Private : sont accessibles uniquement au sein de la classe dans laquelle ils sont déclarés
v Protected : sont accessibles uniquement aux classes d’un package et à ses classes filles.
v Public : sont accessibles de partout et sans restriction.
v Les membres déclarés sans modificateur d’accès ont une portée d’accès au niveau du
package protected par defaut
Lecture des valeurs
Pour lire la valeur d’une variable

Instancier la classe Scanner

Il importer la classe Scanner : import [Link];

q Exemple : Pour lire un entier


int i = [Link]();

nextInt() : Une méthode de la classe Scanner

31
Lecture des valeurs
Autres méthodes Scanner :

nextChar( ) nextByte nextFloat nextDouble()


nextIntnextBoolean()

Il n’existe pas une méthode spécifiques aux caractères, mais on peut


utiliser la méthode charAt()

Scanner sc=new Scanner([Link])


[Link]("entrer votre nom)

int N=[Link]()
[Link](N) 32
Les fonctions mathématiques
Objet Math

Calculer le cosinus d'un angle [Link] ( )

Calculer le sinus d'un angle Math. sin ( )

Calculer la tangente d'un angle [Link] ( )

Calculer le logarithme d'une valeur [Link] ( )

Calculer l'exponentielle d'un nombre [Link] ( )

Arrondir à l'entier inférieur [Link] ( )


Objet Math

Calculer la racine carrée d'un nombre [Link] ( )

ab (a puissance b) [Link] ( )

|a| (valeur absolue de a) [Link] ( )

Trouver la plus grande de deux valeurs [Link] ( )

Trouver la plus petite de deux valeurs [Link] ( )

Tirer un nombre au hasard entre 0 et 1 [Link] ( )


Les tableaux
Tableaux en java int[ ] tab=new int[10]
[Link](tab,15)
le tableau est remplir par 15

int[] tab=new int[3 ]


int tab[ ]=new int[ 3]
int [ ] tab={1,2,3}
int [ ] tab=new int[ ]{1,2,3}

for(int elem:tab)

36
Les tableaux
Tableau des objets
Scanner scanner=new Scanner([Link])
Création d’un tableau d’objets [Link]("entrer....")
int[ ]tab=new int [[Link]( )]
§ Déclaration :
Scanner clavier = new Scanner([Link]);
[Link]("Entrer le nombre de points");

Point [] tab = new Point[ [Link]()];

§ Créer chaque objet du tableau :`

for (int i=0; i< [Link] ; i++)


tab[i]=new Point(2*i,2*i+1);

length représente la taille du tableau

int[ ][ ]tab={{1,2,3},{4,5,6}}
int[ ][ ]tab=new int[ 3][3 ]
scanner sc=new scanner([Link])
for(int i =0;i<[Link];i++){ 37
tab[i]=[Link]();
Les chaines de caractères
il est immuable
[Link]()
[Link]( )
[Link]( )
s1. toLowerCase()
[Link](eviter l espace au debut et a l a fin )
[Link](0) : l element de l indice 0
[Link]("ancien","nouveau")
[Link]("l indice de debut","nbr des cractere que vous voulez")
[Link](s2),[Link](s2) si 0=sont egual sinon differant a 0 ne sont pas egual
StringToKenizer st=new StringToKenizer(s,"/") separer une phrase
Les chaines de caractères
Les chaines de caractères
Exemple
Comparaison de chaines

[Link](s2)
s1+s2
Les opérations sur les chaines

L'opérateur "+" permet de concaténer (mettre bout à bout) des


chaînes de caractères

§ String Text = " Bonjour";


§ String s1 = Text + " Said";
§ String rec = “Salut" + s1 + 3 + ')';
Les opérations sur les chaines

Différentes méthodes permettent de convertir des valeurs de types


primitifs en objets de type String et inversement.
q Ces méthodes se trouvent soit dans la classe String, soit dans les
classes Wrapper associées aux types primitifs ( Byte, Short, Integer,
Long, Float, Double, Character, Boolean ).
q Dans les librairies de base, il existe souvent plusieurs méthodes
pour effectuer un même type de conversion.
Les opérations sur les chaines

La classe String dispose d'un grand nombre de méthodes pour traiter


les chaînes de caractères.
q La méthode length() permet de connaître la longueur d'une chaîne
de caractères (nombre de caractères).
q La méthode charAt() permet de retrouver le caractère situé à la
position n d'une chaîne
q La méthode substring() retourne une sous-chaîne d'une chaîne
donnée. Les paramètres déterminent la position initiale et la
position finale (+1) de la sous-chaîne dans la chaîne originelle.

4eme est exclus


Les opérations sur les chaines

q La méthode split() permet de découper une chaîne de


caractères sur la base d'un séparateur qui est exprimé sous la
forme d'une expression régulière.
Classe StringBuffer StringBuilder

Contrairement à la classe String, la classe StringBuffer permet de créer des


chaînes de caractères modifiables (la taille et le contenu peuvent varier
durant l'exécution de l'application).
§ La notion de capacité (Capacity) représente la taille du buffer interne qui
mémorise la chaîne de caractères (nombre total de caractères disponibles
avant de devoir agrandir la taille du buffer interne).
§ La capacité est automatiquement augmentée lorsque c'est nécessaire. La
capacité initiale peut être définie lors de la création d'un objet
StringBuffer (paramètre du constructeur, 16 par défaut).
§ Ne pas confondre capacité et longueur d'un objet StringBuffer
Classe StringBuffer

@averride
public string toString( ){
return "Eleve{"non"+nom "prenom"+prenom}
pour eviter le hachcode
Classe StringBuffer

Différentes méthodes permettent de manipuler les objets de


type StringBuffer :

insert(indexe,str)

redifinition= @override( meme methode dans la classe parent mais en ajoutant qlq chose)
surcharge=just on ajoute des arrgument dans des methode dans la meme classe
avec la projection des signature

Common questions

Alimenté par l’IA

The primary purpose of constructors in Java is to initialize new objects. They set the initial values for object attributes. Constructors provide a controlled mechanism for object creation, allowing for initialization with specific values, ensuring that each object starts in a consistent and expected state. They offer flexibility through overloading, allowing different ways to instantiate objects depending on given parameters. This sets the groundwork for robust, maintainable code by promoting object integrity right from creation.

The Math class in Java supports complex mathematical operations by providing a variety of static methods, such as 'Math.sqrt()', 'Math.pow()', and 'Math.log()', which perform standard mathematical calculations related to exponential, logarithmic, and trigonometric functions. This abstraction simplifies calculations by directly providing mathematical functions that follow standard libraries, enhancing code clarity and reducing redundancy for developers working with complex numerical computations.

Parameterized constructors facilitate polymorphism by allowing different objects to be initialized in various ways depending on the parameter types and numbers. In Java, constructors can be overloaded by including parameters, enabling the creation of multiple versions of a constructor within a class. This flexibility allows subclasses to call super constructors in diverse ways, thereby supporting polymorphism by allowing subclasses to implement behavior suitable to their context while maintaining a consistent external interface.

The 'equals()' method in Java is crucial for comparing the semantic equivalence of two objects, meaning it checks if the objects are logically 'equal' by comparing their internal state. This method needs to be overridden in a class to compare its attributes meaningfully. On the other hand, '==' checks if two object references point to the same memory location, meaning it compares if they are the exact same object in memory.

Java's String class is immutable and each modification results in a new String creation, leading to inefficiencies when frequent modifications are needed due to high memory usage and the time cost of creating multiple objects. Conversely, StringBuilder is mutable, meaning modifications directly alter the same instance, making it more efficient for operations like concatenation, insertion, or deletion. StringBuilder provides flexibility and efficiency by avoiding the creation of unnecessary intermediate objects, crucial in scenarios requiring extensive and repetitive string manipulation.

Encapsulation enhances usability and security in Java by restricting direct access to an object's attributes, thereby protecting the object's integrity. This is achieved by declaring class fields as private and providing public getter and setter methods to access and update the values. It prevents unauthorized access and modification of data from outside the class, ensuring controlled data handling and reducing system vulnerability.

Declaring a method as 'public' in Java makes it accessible from any other class, inside or outside its package, without any restriction. This is beneficial for allowing interaction with a class's functionality from various parts of an application or even external systems. However, it also poses a risk as it exposes the method to potential misuse or unintended operations, which makes it crucial to ensure robust validation and error handling within public methods.

The String class in Java is immutable, meaning once a String object is created, it cannot be altered. Any modification results in the creation of a new String object, which can lead to performance overhead due to frequent object creation. Conversely, StringBuffer is mutable, allowing modification of the content without creating new objects. It is more efficient for scenarios where extensive string manipulation is necessary, such as appending or inserting characters, as it can grow dynamically and reduce the overhead of creating multiple intermediate objects.

Arrays offer straightforward, indexed access to objects and are allocated with a fixed size, ensuring low overhead in terms of space management. However, their fixed nature is also a limitation, as resizing requires creating a new array and copying elements, which is inefficient for dynamic collections. Arrays do not provide built-in methods for common operations (e.g., element search, removal), unlike more versatile data structures like lists that offer built-in operations and dynamic sizing.

The 'toString()' method can greatly enhance debugging by providing a human-readable string representation of an object's current state. By overriding this method to return detailed information about an object's fields, developers can output meaningful descriptions to the console or logs, simplifying the inspection and diagnosis of runtime issues. This immediate insights into object states can accelerate detecting and resolving logical errors in code.

Vous aimerez peut-être aussi