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
Q

C’est quoi l’UML ?

A

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.

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

CQS (+Exemple)

A

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

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

C’est quoi un constructeur ? Que fait le constructeur par défaut ?

A

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.

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

C’est quoi un destructeur ? (+Exemple)

A

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

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

C’est quoi un get/setter ? Pourquoi ? Permet d’avoir quoi ? Il faut faire attention à quoi ? Quel principe le limite ?

A

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

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

C’est quoi l’OCP ? Pourquoi ?

A

Open-Closed Principe

Un objet doit être :
- Fermé à la modification (Encapsulation) > Risque d’introduire des bugs sinon
- Ouvert par extension (Polymorphisme)

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

C’est quoi le Polymorphisme ? Pourquoi ?

A

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.

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

Liste tous les types de polymorphisme

A

Ad hoc:
- Transtypage
- Surcharge

Universel: (Une seule implémentation pour tous les types à la fois)
- Générique / Paramétré
- Inclusion (Nominal et structurel)

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

C’est quoi le Transtypage ?

A

Convertion implicite/explicite du type d’une valeur (C’est un cast)

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

C’est quoi la Surcharge ?

A

Plusieurs fonctions/méthodes de même nom qui prennent des paramètres différents (type / nombre)

35
Q

C’est quoi le Polymorhpisme d’inclusion ? Comment on le fait ? Permet de faire quoi ?

A

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
Q

C’est quoi le Polymorphisme générique ?

A

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
Q

C’est quoi un sous type ? ça sert à quoi ?

A

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
Q

Liskov

A

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
Q

Quels sont les deux types de sous-typages ?

A

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
Q

C’est quoi l’Héritage ? ça respecte liskov ? ça fait quoi au niveau du couplage ?

A

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
Q

C’est quoi la redéfinition ? ça respecte liskov ? c’est quoi le mot clef en java ?

A

Il s’agit d’une implémentation alternative pour une méthode hérité.

Ne respecte pas automatiquement liskov

@override

42
Q

A quoi sert final en java? Il brise quel principe ?

A

final Attribut > constante
final methode > pas de redéfinition
final classe > pas d’héritage

Contre l’open close principle

43
Q

En java que fait le mot clef extends ?

A

L’objet hérite d’une classe et devient un sous type

44
Q

C’est quoi le dispatch ?

A

C’est une séléction (d’une methode par exemple) en fonction du type de résolution

45
Q

Quel type est considéré lors d’une redéfinition, quel est le dispatch ? Quand ?

A

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
Q

Quel type est considéré lors d’une surcharge, quel est le dispatch ? Quand ?

A

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()&raquo_space;> Forme

47
Q

C’est quoi une classe abstraite ? C’est comment en UML et en Java ?

A

C’est une classe non instantiable

En italique en UML, “abstract” en java

48
Q

C’est quoi une méthode abstraite ? On peut en mettre quand quelle class ?

A

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
Q

C’est quoi une interface (java) ? Cela définit quoi ? C’est quoi le mot clef ? C’est quoi la convention de nommage ?

A

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
Q

A quoi sert une interface ?

A

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
Q

C’est quoi la délégation ? A quoi ça sert ?

A

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
Q

Dans quel cas on ne peut pas faire de la délégation ?

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

Par principe on préfère :
Hiérarchie des types avec …
Réutilisation avec …

A

Interfaces
Compositition / Délégation

54
Q

Quels sont les avantages de la délégation par rapport à l’héritage ? Un désaventage de la délégation ?

A

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

C’est quoi un type générique ? Exemple ?

A

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
Q

C’est quoi le boxing ?

A

Transformation d’un type primitif en objet correspondant. L’unboxing est l’opération ivnerse.

57
Q

C’est quoi un Itérateur ?

A

Objet que l’ont peut itérer = Récupèrer un élement après l’autre dans un ensemble

58
Q

C’est quoi une Collection ?

A

Ajoute des fonctions utiles à un Iterateur Pour stoquer des élements non ordonée.

59
Q

C’est quoi l’Aggrégation ?

A

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
Q

C’est quoi la Composition ?

A

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
Q

Collection<Drawable> c = new ArrayList<Square>()</Square></Drawable>

C’est valide ou pas ?

A

Non parce que si ça marchais on aurait le droit de faire c.add(new Rectangle()).

62
Q

Collection<Square> squares = new ArrayList<Square>()</Square></Square>

C’est valide ?

A

Oui

63
Q

Collection<Rectangle> rectangles = new Collection <Square></Square></Rectangle>

C’est valide ?

A

Non

On a pas de covariance des types génériques. Les types génériques ne RESPECTE PAS le SOUS TYPAGE.

64
Q

printAllCellection(Collection<?> v)

ça fait quoi ?

A

Permet de prendre n’importe quel collection.

Par contre on les voit que comme des objets

65
Q

printAllCellection(Collection<? extends Drawable> v)

ça fait quoi ?

A

N’importe quel sous type de Drawable

66
Q

printAllCellection(Collection<? super T> v)

ça fait quoi ?

A

N’importe quel super-type de T

67
Q

<T extends Comparable<? super T>> T e

ça fait quoi ?

A

e est de n’importe quel type comparable à un de ses super-type

68
Q

En UML, que veut dire :

+
-
#
~
/

A

Public
Privé
Protégé
Paquet
Derivé / Calculé

69
Q

https://imgur.com/FtAgb0t

A

Attribut/Méthode statique

70
Q

https://imgur.com/4MRYctX

A

Sous type | Extention LA FLECHE POINTE SUR LE SUPER TYPE

71
Q

https://imgur.com/Z6cGgmy

A

Classe abstraite

72
Q

https://imgur.com/QUqXo9B

A

Interface | Avec un lien de réalisation (Implémentation) Pointe le parent

73
Q

C’est quoi une méthode statique ?

A

C’est une méthode commune à toutes les instances d’un objet et appelable sans instancier la classe.

74
Q

En UML une fleche tillé veut dire quoi ?

A

Une dépendance

75
Q

Comment on représente la composition en UML ?

A

Un losange noir du coté opposé à la fleche.

La fleche pointe sur l’élement qui va être dépendant de l’autre

76
Q

Comment on fait de la délégation en UML ?

A

Une fleche simple (en trait plein) qui pointe vers un objet

77
Q

Que ve dire le triangle blanc en trait tillé ?

A

Implémantation de l’interface qui est ciblé par la flêche

78
Q

Comment on fait de l’Aggregation en UML ?

A

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
Q

Comment on fait un type parametré en UML ?

A

https://imgur.com/a/U6IukRx

80
Q

Pourquoi quand on doit redéfinir hashCode si on change le equal d’un objet ?

A

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
Q

Quand faut il choisir de l’aggrégation plutôt que de la délégation ?

A

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
Q

A —–> 1,1 B en UML
Que veut dire la cardinalité ?

A

Dans chaque A il y a un unique B

83
Q

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 ?

A

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
Q

Comment on code une méthode générique de type T (en java) ?

A

private <T> boolean test(<T> argu)