POO : CM Flashcards
Paradigme
Ensemble de règle, de concept, de représentation, d’abstraction, de manière de refléchir dans un langage de programmation.
Ce qui nous donne des propriété / contrainte différentes
Impératif
Etat global qui est modifié par une suite séquentielle d’instruction avec effet de bord. C’est une machine à état (Turing)
Points positif de l’impératif
- Proche de la machine (Plus facile à comprendre mais dur de faire des systèmes complexe)
- Approche naturelle (Recette)
Points négatifs de l’impératif
- L’état dépends de l’historique (= dur à débug)
- Le comportement dépend de l’état et l’état dépend du comportement (= dur à débug)
Fonctionnel
- Pas d’état.
- Ensemble de fonction pure = expression (au sens mathématique et sans effet de bords)
- Pas d’ordre d’évaluation
- Composition de fonctions
- Lambda calcul
Points positifs du fonctionnel
- Très proche du raisonnement mathématique
- Facilité de prouvé que le programme est exact
- Comportement indépendant de l’état (= plus facile à débug)
Points négatif du fonctionnel
- Concept beaucoup plus abstrait
- Moins “naturel”
Orienté objet
- Différents objets qui ont chaqu’un leur comportement et état propre
- Ils collaborent en s’envoyant des messages.
L’état global est donc défini comme l’union des états des objets.
Pourquoi autant de langages ? Pourquoi le multi-paradigme?
Chaque langages à des caracteristiques et des propriétés différente (a cause de son paradigme entre autre).
Donc un langage peut être très adapté pour résoudre un problème et très indadapté pour en résoudre un autre.
Chacun à ses applications spécifiques :
C = Embarqué
Python = IA
PHP = Serveur
Javascript = Client web
Les platformes multi-langages compiles plusieurs langages ensemble pour avoir le langage le plus adapté sur chaque sous-problème.
Pourquoi différents paradigme ?
Chaque paradigmes à ses aventages et inconvéhniant. Cela nous permet de choisir le mieux adapté en fonction du problème.
Fonctionnel = Parallélisme
Objet = Interface homme machine
Les langages multi paradigmes prennent le “meilleur” de plusieurs paradigme
Caractéristiques de Java
- Libre
- Multiplatforme
- Très objet (Basé sur des classes)
- Très utilisé = Environnement riche
- Rigoureux
- Concept dans le langages simple
- Typage fort statique et explicite
- Héritage simple
- Gestion de la mémoire automatique avec le garbage collector et référence sans pointeurs
C’est quoi la JVM ? (+ Avantage et inconvénient)
Java Virtual Machine
Programme qui va simuler une machine réelle (Abstraction de l’OS et du CPU).
Interprete le code précompilé
Avantage :
Performant = Unique analyse et execution efficace
Portable = Fonctionne sur n’importe quel couple OS/CPU (Contrairement au C)
Désaventage :
Plus lent mais on utilise JIT pour compensé
Avantage et désavantage du C
Performant = Analyse une seule fois le code et le convertit en instruction native
Distribution compliqué en fonction de l’architecture du CPU et de l’OS
C’est quoi JIT ?
Just In Time
Optimisation dynamique effectué à l’execution utilisé par Java et Scala
C’est quoi un Objet ? ça permet d’obtenir quoi ?
Entité autonome qui dépend et est responsable de son propre état.
Son état est masqué pour les autres objets
Il a un comportement/traitement/manipulation de son propre état
Permet d’obtenir de l’isolation, de l’encapsulation et de la modularité
C’est quoi la Modularité ? ça permet de faire quoi ?
Décomposition d’un système complexe en modules indépendants et réutilisable.
Le programme global fonctionne par collaboration des différents modules
Permet de faire un DECOUPLAGE
C’est quoi l’Encapsulation ? ça implique quoi ?
Créer des boites noires contenant un état et des données (données et fonctions). Ce qu’elles contienne est masqué.
Implique la remplacabilité, on peut remplacer un objet par un autre si ils ont la même interface.
Tell don’t ask c’est quoi ? ça implique quoi ?
Toutes les décisions de traitement doivent être faites par l’objet car il en a la résponsabilité. = Encapsulation
viellir(1) et pas changeAge(recupAge()+1))
C’est quoi une interface ? C’est une alternative à quoi ?
Contrat abstrait que passe des objets sur la manière de communiquer.
C’est l’ensemble des messages qu’un objet est capable de recevoir et met à disposition. = méthode publique
Définit un type abstrait
Alternative de l’héritage pour faire de la réutilisabilité sans sous-typage
C’est quoi l’implémentation ?
Réalisation concrète d’une interface.
Il peut y avoir plusieurs implémentation pour une même interface
C’est quoi une classe ?
Définition d’un type concret.
Ensemble des objets qui ont des caractéristiques communes (Interface/propriétés) = modèle d’un objet
C’est quoi une instance ?
Occurence d’un objet définit par une classe
Valeur du type de la classe
C’est quoi un attribut ?
Variable locale propre à un objet qui défini son état
C’est quoi une méthode ?
Fonction locale propre à un objet qui effectue un traitement/manipulation de l’état de l’objet et/ou envoyer un message.
C’est quoi l’UML ?
Unified Modeling Language
Langage de modélisation graphique objet. Indépendant du langage et peut servir de manière très abstraite ou très proche de l’implémentation.
CQS (+Exemple)
Command Query Separation
Une opération doit être au choix :
- Une commande avec effet de bord qui ne retourne rien
- Une requête qui n’a pas d’effet de bord et retourne une valeur
Procédure VS Fonction
Return VS Output
Passage par valeur VS Passage par référence
C’est quoi un constructeur ? Que fait le constructeur par défaut ?
Méthode particulière qui créer/initialise/instancie un objet
Toutes les classes ont un constructeur par défaut qui ne prend pas de paramètre et qui affecte les valeurs par défaut aux attributs.
C’est quoi un destructeur ? (+Exemple)
Méthode particulière qui supprime l’objet
public void finalize() en java
- Suppression de fichier temporaire
- Fermeture d’une connexion SGBD
Cet appel est non déterminsite
C’est quoi un get/setter ? Pourquoi ? Permet d’avoir quoi ? Il faut faire attention à quoi ? Quel principe le limite ?
Méthode d’accès au attributs privés d’un objet
- Permet du controle d’accès
- D’ajouter des contraites pour ne pas mettre n’importe quoi
- Encapsulation
Tell don’t ask limite ça
C’est quoi l’OCP ? Pourquoi ?
Open-Closed Principe
Un objet doit être :
- Fermé à la modification (Encapsulation) > Risque d’introduire des bugs sinon
- Ouvert par extension (Polymorphisme)
C’est quoi le Polymorphisme ? Pourquoi ?
Fournir une interface unique à des entiés pouvant avoir différents types.
Pour une utilisation indépendante du type réel des élements manipulés.
Liste tous les types de polymorphisme
Ad hoc:
- Transtypage
- Surcharge
Universel: (Une seule implémentation pour tous les types à la fois)
- Générique / Paramétré
- Inclusion (Nominal et structurel)
C’est quoi le Transtypage ?
Convertion implicite/explicite du type d’une valeur (C’est un cast)