POO : CM Flashcards

1
Q

Paradigme

A

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

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
2
Q

Impératif

A

Etat global qui est modifié par une suite séquentielle d’instruction avec effet de bord. C’est une machine à état (Turing)

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
3
Q

Points positif de l’impératif

A
  • Proche de la machine (Plus facile à comprendre mais dur de faire des systèmes complexe)
  • Approche naturelle (Recette)
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
4
Q

Points négatifs de l’impératif

A
  • 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)
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
5
Q

Fonctionnel

A
  • 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
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
6
Q

Points positifs du fonctionnel

A
  • 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)
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
7
Q

Points négatif du fonctionnel

A
  • Concept beaucoup plus abstrait
  • Moins “naturel”
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
8
Q

Orienté objet

A
  • 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.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
9
Q

Pourquoi autant de langages ? Pourquoi le multi-paradigme?

A

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.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
10
Q

Pourquoi différents paradigme ?

A

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

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
11
Q

Caractéristiques de Java

A
  • 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
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
12
Q

C’est quoi la JVM ? (+ Avantage et inconvénient)

A

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é

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
13
Q

Avantage et désavantage du C

A

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

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
14
Q

C’est quoi JIT ?

A

Just In Time

Optimisation dynamique effectué à l’execution utilisé par Java et Scala

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
15
Q

C’est quoi un Objet ? ça permet d’obtenir quoi ?

A

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é

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
16
Q

C’est quoi la Modularité ? ça permet de faire quoi ?

A

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

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
17
Q

C’est quoi l’Encapsulation ? ça implique quoi ?

A

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.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
18
Q

Tell don’t ask c’est quoi ? ça implique quoi ?

A

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))

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
19
Q

C’est quoi une interface ? C’est une alternative à quoi ?

A

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

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
20
Q

C’est quoi l’implémentation ?

A

Réalisation concrète d’une interface.

Il peut y avoir plusieurs implémentation pour une même interface

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
21
Q

C’est quoi une classe ?

A

Définition d’un type concret.

Ensemble des objets qui ont des caractéristiques communes (Interface/propriétés) = modèle d’un objet

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
22
Q

C’est quoi une instance ?

A

Occurence d’un objet définit par une classe

Valeur du type de la classe

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
23
Q

C’est quoi un attribut ?

A

Variable locale propre à un objet qui défini son état

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
24
Q

C’est quoi une méthode ?

A

Fonction locale propre à un objet qui effectue un traitement/manipulation de l’état de l’objet et/ou envoyer un message.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
25
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.
26
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
27
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.
28
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
29
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
30
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)
31
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.
32
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)
33
C'est quoi le Transtypage ?
Convertion implicite/explicite du type d'une valeur (C'est un cast)
34
C'est quoi la Surcharge ?
Plusieurs fonctions/méthodes de même nom qui prennent des paramètres différents (type / nombre)
35
C'est quoi le Polymorhpisme d'inclusion ? Comment on le fait ? Permet de faire quoi ?
Hiérarchiser les types comme des ensembles partageant une même interface Se fait grâce à l'héritage / rédéfinition / sous-typage Code sur la super classe qui fonctionne aussi sur la sous classe >Réutilisabilité
36
C'est quoi le Polymorphisme générique ?
On écrit un traitement indépendant du type réels qui permet de définir des types générique/paramétré ainsi que des structures complexes. Exemple : Liste chainée = Pas besoin de savoir le type stocké pour avoir la longueur
37
C'est quoi un sous type ? ça sert à quoi ?
Relation "est un" (ex un eniter est un réel) C'est un sous ensemble de valeur Permet d'avoir de la remplacabilité si les deux objets ont la même interface.
38
Liskov
Covariance des sorties de l'objet = Sortie en type plus restrictive Contravariace des entrés = Entrée en type plus libre Pas de relachement des postcondition Pas de renforcement des précondition Conservation des invariants Conservation de la mutabilité et des états = On garde les même propriété
39
Quels sont les deux types de sous-typages ?
Nominal : Définition explicite de la relation entre deux objets Structurel (Duck-typing) : Si un objet à la bonne interface, le système le considère automatiquement comment un sous type
40
C'est quoi l'Héritage ? ça respecte liskov ? ça fait quoi au niveau du couplage ?
Partage de propriété entre deux objets On fait en sorte qu'automatiquement les méthodes visibles d'une classe se retrouve dans une autre Cela respecte automatiquement liskov (Sauf si redéfinition) Cela est un couplage fort
41
C'est quoi la redéfinition ? ça respecte liskov ? c'est quoi le mot clef en java ?
Il s'agit d'une implémentation alternative pour une méthode hérité. Ne respecte pas automatiquement liskov @override
42
A quoi sert final en java? Il brise quel principe ?
final Attribut > constante final methode > pas de redéfinition final classe > pas d'héritage Contre l'open close principle
43
En java que fait le mot clef extends ?
L'objet hérite d'une classe et devient un sous type
44
C'est quoi le dispatch ?
C'est une séléction (d'une methode par exemple) en fonction du type de résolution
45
Quel type est considéré lors d'une redéfinition, quel est le dispatch ? Quand ?
Réel (indépendament du systeme de typage) Le dispatch est Dynamique et se fait à l'Execution = late binding ```Forme fc = (Forme) (new Cercle()) fc.quiEstTu() >>> Cercle```
46
Quel type est considéré lors d'une surcharge, quel est le dispatch ? Quand ?
Celui affiché/déclaré/du systeme de typage Le dispatch est Statique et se fait à la compilation = early binding Forme fc = (Forme) (new Cercle()) fc.quoi() >>> Forme
47
C'est quoi une classe abstraite ? C'est comment en UML et en Java ?
C'est une classe non instantiable En italique en UML, "abstract" en java
48
C'est quoi une méthode abstraite ? On peut en mettre quand quelle class ?
Méthode sans implémentation que tous les sous-classe devront implémenter. Un méthode abstraite doit obligatoirement être dans une classe abstraite.
49
C'est quoi une interface (java) ? Cela définit quoi ? C'est quoi le mot clef ? C'est quoi la convention de nommage ?
Ensemble de signature de méthode sans implémentation Les classe doivent founir une implémentation de toues les méthodes. N'a pas d'attributs Définit un type abstrait = classe purement abstraite Interface pour créer et implements pour obtenir. -ABLE
50
A quoi sert une interface ?
Sépération interface implémentation On dépend de l'interface plutôt que le type concret Découplage Modularité Structure le code
51
C'est quoi la délégation ? A quoi ça sert ?
Un objet qui contient un autre objet en lui UNIQUEMENT EN INTERNE (Donc à ne jamais retourner et à ne pas mettre en argument) Réutilisation sans sous typage. Alternative à l'héritage Permet de faire de "l'héritage multiple" (alternative) en ayant accès aux méthodes d'un autre objet.
52
Dans quel cas on ne peut pas faire de la délégation ?
- Un objet ne peut pas s'auto délégué - Les deux objets doivent avoir une interface en commun - L'objet instancié doit être modifiable
53
Par principe on préfère : Hiérarchie des types avec ... Réutilisation avec ...
Interfaces Compositition / Délégation
54
Quels sont les avantages de la délégation par rapport à l'héritage ? Un désaventage de la délégation ?
-Cela permet de faire du sous typage sans héritage EN JAVA - Plus flexible - Plus selectif (On ne récupère par toutes les méthodes direct) - On peut déléger plusieurs objet sans problèmes - Dynamique (On peut changer à l'execution) - La délégation ne créer un couplage fort (Contrairement a l'héritage) -Pas besoin de s'embêter avec la redéfinition complexe (Ex equal/compareTo qui doivent respecter des propriétés comme la commutativité/transitivité) Délégation :c = Difficile de simuler la redéfinition (yoyo)
55
C'est quoi un type générique ? Exemple ?
C'est une structure (classe) dont le type des élements est inconnu à la définition. Le type n'est défini que lors de l'instanciation ou du sous typage Ex : - Collection (Liste chainées) - Classe comparable
56
C'est quoi le boxing ?
Transformation d'un type primitif en objet correspondant. L'unboxing est l'opération ivnerse.
57
C'est quoi un Itérateur ?
Objet que l'ont peut itérer = Récupèrer un élement après l'autre dans un ensemble
58
C'est quoi une Collection ?
Ajoute des fonctions utiles à un Iterateur Pour stoquer des élements non ordonée.
59
C'est quoi l'Aggrégation ?
C'est une collection d'objet indépendants dans un autre. Si on modifie l'un de ces objets, la modification sera effective dans toues les autres instance qui l'ont aggrégé
60
C'est quoi la Composition ?
C'est un objet qui n'existe pas si le composeur n'existe pas. Le composé à la garantie que le composant est uniquement à lui.
61
Collection c = new ArrayList() C'est valide ou pas ?
Non parce que si ça marchais on aurait le droit de faire c.add(new Rectangle()).
62
Collection squares = new ArrayList() C'est valide ?
Oui
63
Collection rectangles = new Collection C'est valide ?
Non On a pas de covariance des types génériques. Les types génériques ne RESPECTE PAS le SOUS TYPAGE.
64
printAllCellection(Collection v) ça fait quoi ?
Permet de prendre n'importe quel collection. Par contre on les voit que comme des objets
65
printAllCellection(Collection v) ça fait quoi ?
N'importe quel sous type de Drawable
66
printAllCellection(Collection v) ça fait quoi ?
N'importe quel super-type de T
67
\> T e ça fait quoi ?
e est de n'importe quel type comparable à un de ses super-type
68
En UML, que veut dire : \+ \- \# ~ /
Public Privé Protégé Paquet Derivé / Calculé
69
https://imgur.com/FtAgb0t
Attribut/Méthode statique
70
https://imgur.com/4MRYctX
Sous type | Extention LA FLECHE POINTE SUR LE SUPER TYPE
71
https://imgur.com/Z6cGgmy
Classe abstraite
72
https://imgur.com/QUqXo9B
Interface | Avec un lien de réalisation (Implémentation) Pointe le parent
73
C'est quoi une méthode statique ?
C'est une méthode commune à toutes les instances d'un objet et appelable sans instancier la classe.
74
En UML une fleche tillé veut dire quoi ?
Une dépendance
75
Comment on représente la composition en UML ?
Un losange noir du coté opposé à la fleche. La fleche pointe sur l'élement qui va être dépendant de l'autre
76
Comment on fait de la délégation en UML ?
Une fleche simple (en trait plein) qui pointe vers un objet
77
Que ve dire le triangle blanc en trait tillé ?
Implémantation de l'interface qui est ciblé par la flêche
78
Comment on fait de l'Aggregation en UML ?
Avec un losange blanc du coté opposé à la fleche. La fleche pointe sur l'élement qui va être dans la collection de l'autre
79
Comment on fait un type parametré en UML ?
https://imgur.com/a/U6IukRx
80
Pourquoi quand on doit redéfinir hashCode si on change le equal d'un objet ?
Pour respecter que deux objet égaux ont le même hashcode. Si on a changé la relation d'égalité il faut s'assurer que leur hashcode soit le même.
81
Quand faut il choisir de l'aggrégation plutôt que de la délégation ?
Quand l'aggrégant EST UNE collection d'aggrégé. On délégue quand juste une sous partie de l'objet doit être traité autre part (et qu'il y en a pas trop)
82
A -----> 1,1 B en UML Que veut dire la cardinalité ?
Dans chaque A il y a un unique B
83
En java, que fait le mot clef static : Lors de l'import Sur une méthode Sur un attribut Que casse-il sur les attribut ?
Import = Pour importer une méthode statique Méthode = Méthode commune à toutes les instance d'un classe et utilisable sans que l'objet soit initialisé Attribut = Variable globale entre objet d'une même classe Il casse l'encapsulation
84
Comment on code une méthode générique de type T (en java) ?
private \ boolean test(\ argu)