wayground logo

Free Printable Worksheets

Font size

S
M
L
XL
Worksheets

Debriefing OOP Advanced

Total questions: 40

Worksheet time: 2hrs 36mins

Name
Class
Date
1.

Quel est le principal objectif de l’encapsulation en POO PHP ?

a)

Masquer les classes aux autres fichiers

b)

Regrouper données + comportements et contrôler l’accès

c)

Améliorer les performances PHP + rendre le code lisible

d)

Acceder aux attributes depuis d'autres classes

2.

Écrivez une classe User qui respecte strictement l’encapsulation :

  • Propriétés privées : id, name, email

  • constructeur, setters et getters ..

Respectez les bonnes pratiques (typage si possible).

4 lines
3.

Que produit le code suivant et pourquoi ?

4 lines
4.

Quel mot-clé permet d’accéder à une méthode de la classe parente en PHP ?

a)

this

b)

self

c)

static

d)

parent

5.

Créez une classe abstraite Payment :

  • Méthode abstraite pay(float $amount)

  • Méthode concrète logPayment()

Puis implémentez : CardPayment et CashPayment

Chaqu'une des classes CashPayment et CardPayment doit implémenter pay() différemment.

4 lines
6.

Expliquez la différence entre : abstract class et interface

4 lines
7.

Laquelle de ces affirmations est fausse ?

a)

Une interface peut contenir des constantes

b)

Une classe peut implémenter plusieurs interfaces

c)

Une interface peut avoir des méthodes avec implémentation

d)

Une classe abstraite peut contenir des méthodes concrètes

8.

Implémentez une interface Notifiable avec la méthode send(string $message)
Puis deux classes: EmailNotification et SMSNotification

Utilisez le polymorphisme pour envoyer une notification sans connaître le type exact.

4 lines
9.

Pourquoi ce code viole-t-il un principe POO ?

class User { public $email; }

4 lines
10.

Quand utiliser le mot-clé final ?

a)

Pour empêcher l’instanciation

b)

Pour empêcher l’héritage ou la redéfinition

c)

Pour créer un singleton

d)

Pour optimiser les performances

11.

Expliquez la différence entre this, self et static.

4 lines
12.

Quel est le problème dans ce code et comment le régler ?

4 lines
13.

Quel mot-clé est utilisé pour accéder à une propriété statique depuis la classe elle-même ?

a)

this

b)

parent

c)

self

d)

static

14.

Créez une classe Logger avec :

  • Une méthode statique log(string $message)

  • Interdiction d’instanciation de la classe

4 lines
15.

Expliquez le design pattern Singleton ?

4 lines
16.

Refactorisez ce code pour utiliser l’injection de dépendances :

4 lines
17.

Écrivez une requête qui :

  • Compte le nombre d’articles par catégorie

  • N’affiche que les catégories ayant plus de 5 articles

4 lines
18.

Quelle est la différence entre WHERE et HAVING ?

4 lines
19.

Écrivez une requête qui récupère :

  • Les utilisateurs

  • Le total de leurs commandes

  • Même ceux sans commandes

4 lines
20.

Sélectionnez les produits dont le chiffre d’affaires dépasse la moyenne globale.

4 lines
21.

Expliquez la différence entre :

  • Association

  • Agrégation

  • Composition

4 lines
22.

Dessinez un diagramme de classes pour : User, Order, Product

Contraintes :

  • Un utilisateur peut avoir plusieurs commandes

  • Une commande contient plusieurs produits

23.

Peut-on hériter d’une classe final ? Pourquoi ?

4 lines
24.

Une classe abstraite peut-elle implémenter une interface ? Expliquez.

4 lines
25.

Pourquoi ce code est dangereux ?

public function setPrice($price) {

$this->price = $price;

}

4 lines
26.

Écrivez une classe Product avec :

  • Propriétés privées : id, name, price

  • Un constructeur qui valide si : name non vide et price > 0

  • Une exception si les données sont invalides

4 lines
27.

Que se passe-t-il si une classe enfant ne définit pas de constructeur mais que la classe parente en a un ?

4 lines
28.

Expliquez la différence entre ce code :

self::method();

et

static::method();

4 lines
29.

Quelle affirmation concernant les classes abstraites est vraie ?

a)

Une classe abstraite ne peut pas être héritée de plusieurs classes.

b)

Une classe abstraite force l’implémentation de méthodes dans les classes filles

c)

Une classe abstraite doit contenir au moins une seule méthode abstraite

d)

Une classe abstraite ne peut pas avoir de constructeur.

30.

Créez une classe Shape contenant une méthode abstraite
calculateSurface(): float.

Créez deux classes Triangle et Square qui héritent de Shape et implémentent cette méthode.

Montrez ensuite un exemple de polymorphisme où une variable de type Shape appelle calculateSurface() sur différents objets.

4 lines
31.

Expliquer la différence entre agrégation et composition.

4 lines
32.

Comptez le nombre d’utilisateurs par rôle et affichez uniquement ceux ayant plus de 5 utilisateurs.

4 lines
33.

Dans quelle situation $this ne peut pas être utilisé ?

a)

Dans une méthode publique

b)

Dans une méthode statique

c)

Dans un constructeur

d)

Dans une méthode protégée

34.

Créez une classe Counter avec :

  • une propriété statique $count

  • une méthode statique increment()

  • une méthode getCount()

4 lines
35.

Que se passe-t-il si une méthode est déclarée final ?

a)

Elle devient statique

b)

Elle ne peut pas être appelée

c)

Elle ne peut pas être redéfinie

d)

Elle ne peut pas être héritée

36.

Comment peut-on accéder à une méthode statique ?

4 lines
37.

Quelles sont les types d'acteurs que l'on peut trouver dans un diagramme de cas d'utilisation ? Définissez-les.

4 lines
38.

Faites correspondre les éléments suivants

a)

1.

Association

b)

2.

Héritage

c)

3.

Agréagation

d)

4.

Composition

e)

5.

Dépendance

39.

Complétez ce diagramme de classe.

40.

Peut-on, dans un diagramme de classes UML, définir une association dont la multiplicité est fixée à 1..1 d’un côté et à 4..4 de l’autre ?

a)

True

b)

False