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.