Détails du sujet

PHP POO [Quiz 1] [Pile 2]

La Programmation Orientée Objet en language PHP

Toutes les cartes

Dans une classe, comment définir une méthode publique lire()?

public function lire();


Dans une classe, comment définir un attribut publique $k?

public $k;


Dans une classe, comment définir une méthode publique statique lire()?

public static function lire();


Dans une classe, comment définir une fonction protégée lire()?

protected function lire();


Dans une classe, comment définir un attribut protégé $q?

protected $q;


Fonction d'hydratation

Ecrire une méthode d'hydration typique hydrate(array $donnees) où l'argument $donnees contient toutes les données d'une entrée de table.

Cette méthode hydrate() appel une méthode dynamique dont le nom n'est pas connu à l'avance et qui est le setter de la variable que l'on souhaite sauver dans l'attribut de la classe.


Expliquez le principe d'encapsulation.

L'encapsulation est l'idée de cacher les données du code extèrieur afin que seules la classe mère ou les classes filles puissent y accéder


La POO permet-elle de représenter chaque enregistrement d'une base de données par un objet?

Oui


Un objet qui représente un enregistrement d'une base de donnée aura-t-il souvent autant d'attributs que de colonnes situées dans la table?

Oui


Hydrate-t-on un objet, quand on met à jour les attributs de l'objet avec les valeurs correspondantes trouvées dans la table?

Oui


Peut-on communiquer avec un serveur de base de données grâce à une instance de la classe PDO?

Oui

Cet objet qui est une instance de la classe PDO est donc different de l'objet qui représente un enregistrement de la table.


Une classe qui hérite d'une autre, a-t-elle accés à tous ses attributs et méthodes publiques et protégés?

Oui


Pourquoi définit-on des classes abstraites?

Afin de définir un modèle de base commun à plusieurs classes.


Comment obliger une classe fille à implémenter une méthode et à l'écrire?

En définissant une méthode abstraite dans la classe mère.


Comment obliger une classe fille à implémenter une méthode sans pouvoir la modifier?

En définissant une méthode abstraite et finale dans la classe mère.


Que nous permet de faire la résolution statique à la volée?

De savoir quelle classe a été initialement appelée afin d'invoquer des méthodes ou d'accéder à des attributs de la classe appelée.


Quelle est la différence entre un attribut protected et private?

L'attibut protected est accessible aux classes filles tandis que l'attribut private ne l'est pas.


Dans la méthode fille, quel terme de 6 lettres permet d'ajouter du code à une méthode d'une classe mère?

On utilise le terme parent:: dans la méthode fille, avant d'ajouter le code sans écraser le code de la classe mère.


Quel terme emploit-on pour parler d'ajout de code par une classe fille à une méthode de la classe mère?

La surcharge.


Dans la surchage d'une méthode que se passe-t-il si on n'utilise pas le terme parent:: avant d'ajouter du code?

Le code de la méthode de la classe mère est écrasé.


Que faut-il faire en terme de visibilité, si on redéfinit une méthode d'une classe parente?

La visibilité de la méthode de la classe fille doit être la même ou plus permissive que la visibilité de la méthode de la classe mère.


Est-il possible d'utiliser une infinité de traits dans une classe, en résolvant les conflits éventuels avec insteadof?

Oui


Enumérez ce qui caractérise une classe abstraite.

  • On peut hériter d'une classe abstraite avec extends.
  • On ne peut pas instancier une classe abstraite avec new.
  • On ne peut pas créer un objet directement à partir d'une classe abstraite.
  • On peut créer un objet à partir de la classe fille de la classe abstraite.

Pour définir une méthode abstraite dans une classe faut-il que la classe soit abstraite?

Oui


Une méthode abstraite déclare-t-elle uniquement sa signature?

Oui


Peut-on dire qu'une interface représente un comportement?

Oui


Comment écrire qu'une classe A implémente une interface B?

classe A implements B;


Une interface est-elle une classe 100% abstraite?

Oui


Peut-on créer des 'objets-tableaux' grâce aux interfaces?

Oui

Avec l'interface iterator par exemple.


Toutes les méthodes présentes dans une interface doivent-être de quelle visibilité?

Publique


Une interface peut-elle lister des méthodes abstraites ou finales?

Non

Toutes les méthodes déclarées dans une interface doivent être publiques.


Une interface peut-elle avoir le même nom qu'une classe et vice-versa?

Non


Dans une classe qui implémente une interface, une erreur fatale se déclenche-t-elle si elle n'implémente pas les méthodes de l'interface?

Oui


Si une classe doit hériter et étendre, quel est le terme qui est placé en premier?

extends puis implements


Peut-on ajouter nos méthodes à une interface?

Oui


Une classe peut-elle implémenter plusieurs interfaces?

Oui

Mais les noms des méthodes des différentes interfaces doivent être différents.


Les constantes d'interfaces fonctionnent-elles exactement comme les constantes de classes? C'est à dire qu'elles ne peuvent pas être écrasées par des classes qui implémentent l'interface.

Oui


Comme pour les classes, une interface peut-elle hériter d'une autre interface grâce à l'opérateur extends?

Oui


Peut-on écraser une constante d'interface par une interface ou une classe qui en hérite?

Non


Contrairement aux classes, les interfaces peuvent-elles hériter de plusieurs interfaces à la fois?

Oui

Il suffit de séparer leur nom par une virgule.

classe A implements I1, I2;


Qu'est-ce qu'une exception?

C'est une erreur que l'on peut attraper grâce aux mots-clé try et catch.


Avec quel mot clé lance-t-on une exception?

throw


Peut-on personnaliser une exception au niveau de son affichage ou de ses renseignements?

Oui

On peut par exemple personnaliser le fichier concerné par l'erreur, le numéro de la ligne, etc...


Est-il possible d'hériter des exceptions entre elles?

Oui


Existe-t-il des exceptions déjà disponibles que l'on peut utiliser? 

Oui

Par exemple InvalidArgumentException


Peut-on lancer une exception dans un destructeur de classe?

Non

Une erreur fatale se déclenche.


Citez quelques exceptions prédéfinies.

InvalidArgumentException
RuntimeException
UnexpectedValueException
OutOfRangeException
LengthException
DomainException
BadMethodCallException
BadFunctionCallException
UnderFlowException
LogicException


Les traits sont-ils un moyen d'éviter la duplication de méthodes?

Oui


Quel mot de 3 lettres permet d'utiliser un trait?

use


Un trait peut-il utiliser un autre trait?

Oui