QCM de compréhension

Dans le cadre de la POO,

  1. Un objet c'est :
    1. Un ensemble d'atomes qu'un humain peut déplacer avec ses mains.
    2. Un concept qui représente un ensemble de données et qui en contrôle l'accès.
  2. Une classe c'est :
    1. L'endroit où se trouvent les élèves et le professeur.
    2. Un moule d'après lequel seront fabriqué des objets.
  3. Un attribut c'est :
    1. Une caractéristique d'un objet, par exemple la taille d'un tableau.
    2. Une fonctionnalité de mon programme, par exemple la possibilité d'attribuer chaque livre à un client.
  4. Une méthode c'est :
    1. Un guide commun à toutes les actions réalisées par le programme qui les aide à se coordonner.
    2. Une action réalisée par un objet.

Dans le cadre d'une application dédiée aux diététiciens et diététiciennes, on souhaite écrire une classe qui permette de représenter des fruits. On donne dans le tableau ci-dessous les informations connues sur différents fruits.

img

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
# ligne 1
    """ Représente un fruit """
    def __init__(.........................):
        self.nom = n
        self.calories_pour_100g = cal100
        self.sucres_pour_100g = suc100
.............................................
.............................................
.............................................
.............................................
# ligne 2
# ligne 3
.............................................
.............................................
.............................................
.............................................

Pour définir une classe Fruit, il faut écrire à la place de la ligne 1:

  1. class Fruit:
  2. classe Fruit()
  3. class Fruit():
  4. class Fruit

Chaque fruit possède différentes caractéristiques, que l'on a détaillé dans la méthode __init__. Les paramètres manquant dans la définition de la méthode __init__ sont :

  1. nom, calories_pour_100g, sucres_pour_100g
  2. self, n, cal100, suc100
  3. self, nom, calories_pour_100g, sucres_pour_100g
  4. n, cal100, suc100

Pour instancier une variable banane de type Fruit, on écrit à la place de la ligne 2 :

  1. banane = fruit
  2. banane = Fruit
  3. banane = Fruit()
  4. Autre chose.

On peut créer autant d'instances de classe qu'on le souhaite.

  1. Vrai.
  2. Faux.

Pour modifier l'attribut nom de l'objet banane de type Fruit en "BANANA", on écrit à la place de la ligne 3 :

  1. banane[nom] = "BANANA"
  2. banane["nom"] = "BANANA"
  3. banane.nom = "BANANA"
  4. banane.nom("BANANA")

La valeur énergétique d'un aliment s'exprime en Joules (ou Kilo Joules : KJ). On trouve toutefois encore des valeurs en Cal (ou KCal) sur des emballages d'aliments. On utilise pour cela la règle de conversion : 1KJ = 0,239 KCal.

La fonction energie calcule l'énergie en KJ d'un objet fruit de type Fruit, pesant poids grammes.

1
2
3
def energie(fruit, poids):
    """ Fruit, int -> float """
    return fruit.calories_pour_100g*(poids/100)/0.239
    1. Recopier le code de cette fonction au bon endroit dans le code afin que celle-ci soit une méthode de la classe Fruit.
    2. Cette méthode respecte-t-elle les conventions de nommage de python ? Justifier.
  1. On souhaite appliquer cette méthode à l'objet banane afin d'obtenir l'énergie de 120g de bananes. Quelle instruction doit-on pour cela utiliser ?

    1. energie(banane, 120)
    2. banane.energie(120)
    3. energie = banane(120)
    4. banane.energie(banane, 120)

L'ANSES définit un besoin énergétique de 2600 kcal/jour pour les hommes de 18 à 69 ans et de 2100 kcal/j pour les femmes de 18 à 59 ans.

Écrire une fonction est_panier_valide qui étant donné une liste panier constituée de tuples (fruit, poids)fruit pèse poids grammes et un entier seuil détermine si l'énergie totale des fruits présents dans le panier est supérieure au seuil (exprimé en KJ) recommandé.

Par exemple, supposant que les variables pomme, raisin, peche, kiwi et fraise ont correctement été instanciées.

1
2
3
panier = [(banane, 3201), (pomme, 5410), (raisin, 6321)]    
print(est_panier_valide(panier, 2100))
print(est_panier_valide(panier, 2600))
False
True