Pour une affectation, j'ai créé un programme C++ simple qui utilise une superclasse (Student) et deux sous-classes (CourseStudent
et ResearchStudent
) pour stocker une liste d'étudiants et imprimer leurs détails, avec différents détails montrés pour les deux différents types d'étudiants (en utilisant l'annulation de la méthode display()
de Student
).Encapsulation d'une entrée utilisateur de données pour une classe
Ma question est de savoir comment le programme recueille l'entrée de l'utilisateur des choses comme le nom de l'étudiant, numéro d'identification, l'unité et l'information des frais (pour un étudiant en cours) et l'information de recherche (pour les étudiants de recherche):
Mon la mise en œuvre a pour but de solliciter l'entrée de l'utilisateur et la collecte de cette entrée est gérée dans les classes elles-mêmes. Le raisonnement derrière cela était que chaque classe sait de quel type d'entrée il a besoin, donc il est logique pour moi de savoir comment le demander (donné un ostream à travers lequel demander et un istream pour recueillir l'entrée de). Mon conférencier dit que les suggestions et les commentaires devraient tous être traités dans le programme principal, ce qui me semble un peu plus compliqué, et il serait plus difficile d'étendre le programme pour gérer différents types d'étudiants. Je considère, en guise de compromis, de créer une classe d'assistance qui gère l'invite et la collecte de l'entrée utilisateur pour chaque type de Student
, qui pourrait ensuite être appelée par le programme principal. L'avantage de ceci serait que les classes d'étudiants n'en ont pas autant (elles sont donc plus propres), mais elles peuvent aussi être groupées avec les classes auxiliaires si la fonctionnalité d'entrée est requise. Cela signifie également que plus de classes de Student
pourraient être ajoutées sans avoir à apporter de changements majeurs au programme principal, tant que des classes auxiliaires sont fournies pour ces nouvelles classes. De plus, la classe d'assistance pourrait être permutée pour une version en langue alternative sans avoir à apporter de modifications à la classe elle-même.
Quels sont les principaux avantages et inconvénients des trois différentes options d'entrée utilisateur (entièrement encapsulé, classe d'assistance ou dans le programme principal)?
Lit un peu la séparation MVC (Model-View-Controller). Dans votre cas, les classes sont les modèles et la méthode principale (ou la classe d'aide) lisant l'entrée serait le contrôleur. – vladr
J'ai entendu parler de l'architecture MVC, je suppose que c'est le moment de prendre le temps d'apprendre et de l'appliquer. Dans ce cas, la partie 'View' est gérée par la méthode display() de la classe Student (et des sous-classes), ainsi que par la méthode principale qui gère les options de menu et autres. Serait-il plus approprié d'avoir une classe de spectateur qui invite l'étudiant pour ses détails et les affiche, ou est-ce une séparation trop artificielle (ou tout simplement pas nécessaire pour un si petit projet)? –