Le principe de la pensée objet se caractérise par la définition de chaque entité ayant une existence propre par ses propres caractéristiques avant même de penser quoi calculer ou programmer pour arriver au résultat ou sortie à afficher par notre programme, nous appelons cette entité Objet. Chaque Objet par exemple un Rectangle est définit tel que nous le percevons dans son domaine des « Formes Géométriques » avec ses « propriétés » et ses « méthodes » le caractérisant. Nous compléterons sa définition en le reliant à d’autres objets du même domaine comme la forme Carre qui est un cas particulier d’un Rectangle.
Le principe de la pensée objet se caractérise par la définition de chaque entité ayant une existence propre par ses propres caractéristiques avant même de penser quoi calculer ou programmer pour arriver au résultat ou sortie à afficher par notre programme, nous appelons cette entité Objet. Chaque Objet par exemple un Rectangle est définit tel que nous le percevons dans son domaine des « Formes Géométriques » avec ses « propriétés » et ses « méthodes » le caractérisant. Nous compléterons sa définition en le reliant à d’autres objets du même domaine comme la forme Carre qui est un cas particulier d’un Rectangle.
Objectif général : Développer en orienté objet avec Python
Objectifs opérationnels :
- Organiser le code grâce aux classes
- Sécuriser une classe avec l’encapsulation
- Réutiliser et factoriser du code avec l’héritage
- Invoquer des méthodes de même nom, quel que soit le type d'objet sur lequel elles opèrent, sans avoir à effectuer au préalable une vérification de type grâce au polymorphisme
- Les constructeurs
- La gestion des exceptions
- Les getters et les setters
- Lecture du clavier
- Les references
- Surcharge des méthodes
- Le mot clé this
- la méthode String tostring()
Formation C# - Cours 3 - Programmation objetkemenaran
Troisième partie de la formation C# du Club Microsoft Isep.
Fondements de la Porgramation Orientée Objet, introduction aux classes, méthodes et attributs par l'exemple.
Les nouveautés de C++11 : Ecrire du C++ ModerneMicrosoft
Le langage C++ a toujours la réputation d’un langage complexe, demandant une rigueur de tous les instants et qui peut en rebuter plus d’un. Mais avec l’arrivée de la nouvelle norme C++11 et de son intégration dans Visual Studio 11 (et intégration partielle dans Visual Studio 2010), elle permet comme le souligne Herb Sutter, d’écrire désormais du code "Clean, Safe and Fast", nous passons à l'ère du C++ moderne.
Objectif général : Développer en orienté objet avec Python
Objectifs opérationnels :
- Organiser le code grâce aux classes
- Sécuriser une classe avec l’encapsulation
- Réutiliser et factoriser du code avec l’héritage
- Invoquer des méthodes de même nom, quel que soit le type d'objet sur lequel elles opèrent, sans avoir à effectuer au préalable une vérification de type grâce au polymorphisme
- Les constructeurs
- La gestion des exceptions
- Les getters et les setters
- Lecture du clavier
- Les references
- Surcharge des méthodes
- Le mot clé this
- la méthode String tostring()
Formation C# - Cours 3 - Programmation objetkemenaran
Troisième partie de la formation C# du Club Microsoft Isep.
Fondements de la Porgramation Orientée Objet, introduction aux classes, méthodes et attributs par l'exemple.
Les nouveautés de C++11 : Ecrire du C++ ModerneMicrosoft
Le langage C++ a toujours la réputation d’un langage complexe, demandant une rigueur de tous les instants et qui peut en rebuter plus d’un. Mais avec l’arrivée de la nouvelle norme C++11 et de son intégration dans Visual Studio 11 (et intégration partielle dans Visual Studio 2010), elle permet comme le souligne Herb Sutter, d’écrire désormais du code "Clean, Safe and Fast", nous passons à l'ère du C++ moderne.
Si la baisse de la productivité est effective dans toutes les économies développées... elle est particulièrement marquée en France. Au niveau national, cet essoufflement touche tous les secteurs, et plus particulièrement celui de l’industrie, usuellement caractérisé par des gains de productivité élevés. Depuis la crise Covid, le secteur industriel contribue pour 35 % environ à cette perte, alors qu’il ne représente que 9,3 % de la valeur ajoutée nationale brute en 2023. Dans ce contexte, est-il possible de mener une politique de réindustrialisation du pays sans y associer un objectif de hausse des gains de productivité ?Non rappelle ce Cube. Au contraire, ces deux objectifs, jusqu’alors indépendants l’un de l’autre, sont désormais deux défis à relever conjointement. En analysant les différents explications à la baisse de celle-ci observée en France et dans les autres économies développées, ce Cube suggère que l’augmenter en parallèle d’une politique de réindustrialisation sous-entend une réallocation des facteurs de production vers les entreprises industrielles à fort potentiel. Elle suppose également une une meilleure affectation des ressources.
2. 2
Petits rappels : l’objet
◼ Une structure de données (tuple ou tableau) s’appelle un objet
◼ Un objet possède un type appelé sa classe
• Si la classe de l’objet o est C, on dit que o est une instance de C
◼ En Java, on ne manipule que des références vers des objets
◼ Une méthode d’instance est une méthode associée à l’objet
• Possède un paramètre implicite du type de la classe nommé this
Programmation orientée objet
3. 3
But de la programmation orientée objet
Améliorer la réutilisabilité du code
car une ligne de code coûte très cher !
(~1h de développement par ligne de code)
Programmation orientée objet
4. 4
Que signifie réutiliser du code ?
◼ Quand on réutilise du code, on est en général intéressé par une
fonctionnalité, pas par une mise en œuvre spécifique
◼ L’exemple de la classe Army dans l’armée de monstres
• Objet sur lequel je peux appeler addMonster
• Mais savoir que les monstres sont stockés dans un tableau
extensible ou une liste chaînée n’est pas essentiel
(sauf pour les performances)
Programmation orientée objet
5. 5
Programmation orientée objet
◼ Concevoir une application en terme d’objets qui interagissent
Au lieu de la concevoir en terme de structures de données et de
méthodes (programmation impérative)
⇒ On ne s’intéresse plus à la mise en œuvre d’un objet, mais
d’abord aux fonctionnalités qu’il fournit
◼ Objet = entité du programme fournissant des fonctionnalités
• Encapsule une structure de données et des méthodes qui
manipulent cette structure de données
• Expose des fonctionnalités
Programmation orientée objet
6. 6
L’objet en Java
◼ Contient une mise en œuvre
• Des champs
• Des méthodes d’instances
• Des constructeurs (méthodes d’initialisation vues dans ce cours)
◼ Expose des fonctionnalités
• En empêchant l’accès à certains champs/méthodes/constructeurs
à partir de l’extérieur de la classe
⇒ principe d’encapsulation vue dans ce cours
Programmation orientée objet
7. 7
Plan du cours
1. Le constructeur
2. L’encapsulation
3. Les champs de classe
Programmation orientée objet
8. 8
Création d’un objet
◼ Jusqu’à maintenant, pour créer un objet, on écrit une méthode
de classe qui
• Alloue l’objet
• Initialise l’objet
• Renvoie l’objet initialisé
◼ Par exemple
static Compte create(String name) {
Compte res = new Compte();
res.name = name;
res.solde = 0;
return res;
}
Programmation orientée objet
9. 9
Le constructeur
◼ Constructeur = méthode simplifiant la création d’un objet
◼ Méthode d’instance spéciale pour initialiser un objet
• Méthode d’instance possédant le nom de la classe
• Pas de type de retour
• Peut posséder des paramètres
◼ Le constructeur est appelé automatiquement pendant un new
• new commence par allouer un objet
• Puis appelle le constructeur avec comme receveur le nouvel objet
• Et, enfin, renvoie l’objet
Programmation orientée objet
10. 10
Exemple avec la classe Compte
Programmation orientée objet
class Compte {
String name;
double solde;
static Compte create(
String name) {
// alloc + constructeur vide
Compte res = new Compte();
res.name = name;
res.solde = 0;
return res;
}
}
c = Compte.create("Tyrion");
class Compte {
String name;
double solde;
// déf. constructeur
Compte(String name) {
this.name = name;
this.solde = 0;
}
}
// alloc + constructeur
c = new Compte("Tyrion");
Avec constructeur Sans constructeur
11. 11
Exemple avec la classe Compte
Programmation orientée objet
class Compte {
String name;
double solde;
static Compte create(
String name) {
// alloc + constructeur vide
Compte res = new Compte();
res.name = name;
res.solde = 0;
return res;
}
}
c = Compte.create("Tyrion");
class Compte {
String name;
double solde;
// déf. constructeur
Compte(String name) {
this.name = name;
this.solde = 0;
}
}
// alloc + constructeur
c = new Compte("Tyrion");
Avec constructeur Sans constructeur
Remarque :
Si pas de constructeur, Java génère un constructeur vide
sans paramètre qui initialise les champs à 0/+0.0/faux/null
12. 12
Plan du cours
1. Le constructeur
2. L’encapsulation
3. Les champs de classe
Programmation orientée objet
13. 13
◼ Principe : cacher les détails de mise en œuvre d’un objet
⇒ pas d’accès direct aux champs de l’extérieur de l’objet
L’encapsulation
Programmation orientée objet
Un objet
Champs
Méthodes
d’instance
Agissent sur
Interface
d’accès
à
l’objet
14. 14
Mise en œuvre : l’encapsulation
◼ Chaque entité (classe, champ, méthode ou constructeur)
possède un niveau d’encapsulation
• Définit à partir d’où dans le programme une entité est visible
◼ Permet de masquer les détails de mise en œuvre d’un objet
Programmation orientée objet
15. 15
L’encapsulation en Java
◼ Trois niveaux de visibilité pour une entité en Java
(techniquement quatre, mais le dernier est vu en CI6)
• Invisible en dehors de la classe : mot clé private
• Invisible en dehors du package : comportement par défaut
• Visible de n’importe où : mot clé public
◼ En général
• Les champs sont privés (inaccessibles en dehors de la classe)
• Les méthodes sont publiques
Programmation orientée objet
16. 16
L’encapsulation par l’exemple
package tsp.bank;
public class Bank { /* visible partout */
private Node node; /* invisible de l’extérieur
du fichier (de Bank) */
public Bank() { … } /* visible partout */
public void lookup() (String name) { … } /* visible
partout */
void display(Ba) { … } /* invisible en dehors
du package tsp.bank */
}
Programmation orientée objet
17. 17
Plan du cours
1. Le constructeur
2. La visibilité
3. Les champs de classe
Programmation orientée objet
18. 18
Les champs de classe
◼ Champ de classe
• Champ précédé du mot clé static
• Définit une variable globale, indépendante d’une instance
Exemple : System.out est un champ de classe de la classe
System
◼ Attention !
• Un champ de classe est une variable mais pas un champ
d’instance : un champs d’instance est un symbole nommant un
élément d’une structure de donnée
◼ Dans la suite du cours
• On n’utilise pas de champs de classe
• On utilise static uniquement pour la méthode main
Programmation orientée objet
19. 19
Notions clés
◼ Programmation orientée objet
• Conception d’un programme à partir d’objets qui interagissent
• On s’intéresse à la fonctionnalité d’un objet avant de s’intéresser à
sa mise en œuvre
◼ Le constructeur
• Méthode appelée pendant new pour initialiser un objet
◼ Principe d’encapsulation pour cacher la mise en œuvre
• private : invisible en dehors de la classe
• Par défaut : invisible en dehors du package
• public : visible de partout
Programmation orientée objet