QCM Csarp - Programmation Orientée Objet – Partie 1

Question 1 sur 20
public class Animal 
{ 
   public virtual void MakeSound() { Console.WriteLine("Animal"); } 

}


 public class Dog : Animal { 
   public override void MakeSound() { Console.WriteLine("Dog"); } 
}


Animal myAnimal = new Dog(); 
    myAnimal.MakeSound();

1. Quelle est la sortie du code suivant ?

 

  • A. Animal
  • B. Dog
  • C. Aucun résultat
  • D. Une erreur de compilation
B

Le mot-clé virtual permet à la méthode de la classe de base d'être remplacée dans les classes dérivées. Ici, la méthode MakeSound() est remplacée dans la classe Dog, donc la sortie est Dog.

Question 2 sur 20

2. Quelle est la sortie du code suivant ?

public class Person 

{
    public string Name { get; set; } } public class Employee : Person { public int Id { get; set; } }



 Employee emp = new Employee { Name = "John", Id = 123 }; Console.WriteLine(emp.Name);
  • A. John
  • B. 123
  • C. Employee
  • D. null
A

La propriété Name est héritée de la classe de base Person, donc elle est accessible et retourne la valeur "John".

Question 3 sur 20

3. Quelle est la sortie du code suivant ?

public class Base 
{ public int Value = 5; } public class Derived : Base { public int Value = 10; }



 Base obj = new Derived(); Console.WriteLine(obj.Value);
  • A. 5
  • B. 10
  • C. Une erreur de compilation
  • D. Aucun résultat
A

Les membres de la classe dérivée cachent les membres de la classe de base. Ici, Value dans Derived cache Value dans Base, mais obj est de type Base, donc Value est celui de Base.

Question 4 sur 20

4. Quelle est la sortie du code suivant ?

public class Test 
{ public static void Method(int x) { Console.WriteLine(x); } public static void Method(string x) { Console.WriteLine(x); } 

}

Test.Method(10); Test.Method("Hello");
  • A. 10 puis Hello
  • B. Hello puis 10
  • C. Une erreur de compilation
  • D. Aucun résultat
A

Le code utilise la surcharge de méthode pour appeler Method() avec un int et une string.

Question 5 sur 20

5. Quelle est la sortie du code suivant ?

public class Example 
{ 
public void Print(params int[] numbers) { foreach (var number in numbers) Console.Write(number + " "); } 
}

Example example = new Example(); example.Print(1, 2, 3);
  • A. 1 2 3
  • B. 1
  • C. 1 2
  • D. Une erreur de compilation
A

Le mot-clé params permet à une méthode d'accepter un nombre variable d'arguments.

Question 6 sur 20

6. Quelle est la sortie du code suivant ?

public class Data 
{
 public int Value { get; set; } }

Data data1 = new Data { Value = 100 }; Data data2 = data1; data2.Value = 200; Console.WriteLine(data1.Value);
  • A. 200
  • B. 100
  • C. Une erreur de compilation
  • D. Aucun résultat
A

Les objets sont passés par référence, donc les modifications apportées à data2 affectent également data1.

Question 7 sur 20

7. Quelle est la sortie du code suivant ?

public class Parent { public virtual void Display() { Console.WriteLine("Parent"); } } public class Child : Parent { public override void Display() { Console.WriteLine("Child"); } }
 Parent p = new Parent(); Parent c = new Child(); p.Display(); c.Display();
  • A. Parent puis Child
  • B. Child puis Parent
  • C. Parent puis Parent
  • D. Child puis Child
A

La méthode Display() est appelée en fonction du type de l'objet référencé, donc p appelle la méthode de Parent et c appelle celle de Child.

Question 8 sur 20

8. Quelle est la sortie du code suivant ?

public class Test { public static void Show(T item) { Console.WriteLine(item); } } Test.Show(5); Test.Show("Hello");

  • A. 5 puis Hello
  • B. Hello puis 5
  • C. Une erreur de compilation
  • D. Aucun résultat
A

La méthode générique affiche les éléments en fonction de leur type spécifié.

Question 9 sur 20

9. Quelle est la sortie du code suivant ?

public class Calculator { public int Add(int a, int b) { return a + b; } public double Add(double a, double b) { return a + b; } } Calculator calc = new Calculator(); Console.WriteLine(calc.Add(5, 10)); Console.WriteLine(calc.Add(5.5, 10.5));
  • A. 15 puis 16
  • B. 15 puis 16.0
  • C. 15.0 puis 16.0
  • D. 15 puis 16.5
A

Les méthodes surchargées sont appelées en fonction des types des arguments passés.

Question 10 sur 20

10. Quelle est la sortie du code suivant ?

public class Base { public int Value = 5; } public class Derived : Base { public new int Value = 10; } Base obj = new Derived(); Console.WriteLine(obj.Value);
  • A. 5
  • B. 10
  • C. Une erreur de compilation
  • D. Aucun résultat
A

Le mot-clé new cache le membre de la classe de base mais ne le remplace pas. Ici, obj est de type Base, donc il accède à la valeur 5.

Question 11 sur 20

11. Quelle est la sortie du code suivant ?

public class Person { public string Name { get; set; } } public class Employee : Person { public new string Name { get; set; } } Employee emp = new Employee { Name = "John" }; Console.WriteLine(emp.Name);
  • A. John
  • B. null
  • C. Une erreur de compilation
  • D. Aucun résultat
A

La propriété Name dans Employee cache celle de la classe de base mais est accessible à travers le type Employee.

Question 12 sur 20

12. Quelle est la sortie du code suivant ?

public class Base { public virtual void Print() { Console.WriteLine("Base"); } } public class Derived : Base { public override void Print() { Console.WriteLine("Derived"); } } Base obj = new Base(); obj.Print(); obj = new Derived(); obj.Print();
  • A. Base puis Derived
  • B. Derived puis Base
  • C. Base puis Base
  • D. Derived puis Derived
A

La méthode Print() est remplacée dans la classe dérivée. Ici, le type d'objet détermine la méthode qui est appelée.

Question 13 sur 20

13. Quelle est la sortie du code suivant ?

public class Program {
 public static void Main() { object obj = "Hello"; string str = (string)obj; Console.WriteLine(str); }
  • A. Hello
  • B. Une erreur d'exécution
  • C. Une erreur de compilation
  • D. Aucun résultat
A

La conversion de type object à string est valide et renvoie la chaîne Hello.

Question 14 sur 20

14. Quelle est la sortie du code suivant ?

public class Test {
 public static void Display(string s = "Default") { Console.WriteLine(s); } 
} 
Test.Display("Custom"); Test.Display();
  • A. Custom puis Default
  • B. Default puis Custom
  • C. Custom puis Custom
  • D. Default puis Default
A

Les paramètres avec une valeur par défaut sont utilisés si aucun argument n'est fourni.

Question 15 sur 20

15. Quelle est la sortie du code suivant ?

public class Test {
 public static void Method(T item) where T : class { Console.WriteLine(item.GetType().Name); } 
}
 Test.Method(new Test());
  • A. Test
  • B. Class
  • C. Object
  • D. Une erreur de compilation
A

Le nom du type de l'objet est affiché.

Question 16 sur 20

16. Quelle est la sortie du code suivant ?

public class Example {
 public int this[int index] { get { return index; } set { Console.WriteLine("Index set to " + value); } } 
} 
Example example = new Example(); example[5] = 10; Console.WriteLine(example[5]);
  • A. Index set to 10 puis 5
  • B. Index set to 10 puis Index set to 5
  • C. 10 puis 5
  • D. Une erreur de compilation
A

Les indexeurs permettent de définir des comportements personnalisés lors de l'accès aux éléments via des crochets.

Question 17 sur 20

17. Quelle est la sortie du code suivant ?

public class Test 
{ public static void Display(T[] array) { foreach (T item in array) Console.Write(item + " "); } 
}
 Test.Display(new int[] { 1, 2, 3 }); Test.Display(new string[] { "A", "B" });
  • A. 1 2 3 puis A B
  • B. A B puis 1 2 3
  • C. 1 2 3 A B
  • D. Aucun résultat
A

Les tableaux d'entiers et de chaînes sont traités correctement grâce aux génériques.

Question 18 sur 20

18. Quelle est la sortie du code suivant ?

public class Test {
 public static void Print(T item) where T : struct { Console.WriteLine(item); } }

 Test.Print(10); Test.Print(3.14);
  • A. 10 puis 3.14
  • B. 10 puis une erreur
  • C. Une erreur de compilation
  • D. 10 puis 10
A

Les types de valeur sont les types structurés et peuvent être utilisés avec les contraintes génériques.

Question 19 sur 20

19. Quelle est la sortie du code suivant ?

public class Test {
 public static void Print(T item) { Console.WriteLine(item?.ToString()); } }

 Test.Print(null); Test.Print("Hello");
  • A. null puis Hello
  • B. null puis une erreur
  • C. Une erreur de compilation
  • D. null puis null
A

Le ?. opérateur vérifie si l'objet est nul avant d'appeler ToString().

Question 20 sur 20

20. Quelle est la sortie du code suivant ?

public class Test 
{ public static void Print(T[] array) { foreach (var item in array) Console.Write(item + " "); } } 

Test.Print(new List { 1, 2, 3 }.ToArray());
  • A. 1 2 3
  • B. 1 2 3 1 2 3
  • C. 1 2
  • D. Aucun résultat
A

Les listes peuvent être converties en tableaux pour être traitées par les méthodes génériques.

Ajouter un commentaire

Veuillez vous connecter pour ajouter un commentaire.

Pas encore de commentaires.