Нужны советы по программе (ООП) - C#

Узнай цену своей работы

Формулировка задачи:

Хочу разобраться, потому настоятельно прошу помочь консультациями а не полным решением задачи, поскольку хочу понять все сам и написать ее. Есть масса вопросов по ООП на шарпе, пробовал на пхп там немного проще. Постановка задачи.
Тип «Образовательный уровень» определить как перечисление со значениями полей «бакалавр», «специалист», «магистр». Тип «Человек» определить как класс, содержащий: - закрытые поля с именем и фамилией, реализованные в виде строк (String); с датой рождения типа Date; - все функции реализовать в соответствии общим требованиям. Тип «Экзамен» определить как класс, содержащий: - закрытое поле с названием экзамена как строка (String); - закрытые поля с оценкой и типа Date с датой сдачи экзамена; - функции реализовать в соответствии общим требованиям. Тип «Студент» определить как класс, содержащий: - закрытые поля типа «Человек» и типа «Образовательный уровень, что приобретается»; - информацию о сданных экзаменах оформить как динамический массив (ArrayList); - предусмотреть функцию для добавления очередного экзамена в списке сданных; - кроме стандартной функции формирования строки с полной информацией, предусмотреть функцию ToStringShort формирования строки сокращенной информации с фамилией и средним баллом; - другие функции реализовать в соответствии общим требованиям. В тестовом примере создать объекты типа «Студент» согласно общим требованиям и вывести информацию о них в полном и сокращенном виде. К одному из объектов добавить один экзамен и вывести обновленную информацию о нем в двух формах.
Первые вопросы которые меня волнуют: 1. Я создал с этой целью 4 класса - перечисления, студент, человек, экзамены. Я до конца не понимаю логики, но решил что класс студент должен быть унаследованным от класса человек, а остальная часть запрашиваемых функций в классе студент будет реализирована через интерфейсы, правильно ли это? Если нет поясните прошу. 2. Правильный синтаксис наследования, много искал, и книжки читал но там либо все на пальцах либо примеры очень сложные для понимания. Насколько я понял что если я хочу чтобы методы и поля были доступными для класса наследника, то мне достаточно лишь упомянуть его в названии класса наследника? Нет надобности вводить какие-то дополнительные определения в обоих классах? Это не все вопросы, их еще много по данной задаче, прошу не проходите мимо, нужна помощь, буду крайне благодарен за любые советы и настановления.

Решение задачи: «Нужны советы по программе (ООП)»

textual
Листинг программы
using System;
using System.Collections.Generic;
 
namespace CF1591654
{
 
    public enum EducationalLevelInfo
    {
        Bachelor,
        Specialist,
        Master
    }
 
    public interface IReadOnlyHumanInfo
    {
        string Name { get; }
        string Surname { get; }
        DateTime DateOfBirth { get; }
    }
 
    public interface IReadOnlyExamInfo
    {
        string Name { get; }
        int Assessment { get; }
        DateTime TheDateOfTheExam { get; }
    }
 
    public class HumanInfo:IReadOnlyHumanInfo
    {
        public HumanInfo(string name, string surname, DateTime dateOfBirth)
        {
            Name = name;
            Surname = surname;
            DateOfBirth = dateOfBirth;
        }
 
        public string Name { get; set; }
        public string Surname { get; set; }                     
        public DateTime DateOfBirth { get; private set; }
    }
 
    public class ExamInfo:IReadOnlyExamInfo
    {
        public string Name { get; set; }
        public int Assessment { get; set; }
 
        public DateTime TheDateOfTheExam { get; set; }
    }
 
    public class Student
    {
        public Student(IReadOnlyHumanInfo human, EducationalLevelInfo educationalLevel, List<IReadOnlyExamInfo> examinations)
        {
            Human = human;
            EducationalLevel = educationalLevel;
            Examinations = examinations;
        }
 
        public IReadOnlyHumanInfo Human { get; set; }
        public EducationalLevelInfo EducationalLevel { get; set; }
        public List<IReadOnlyExamInfo> Examinations { get; set; }
 
    }
}

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

12   голосов , оценка 3.75 из 5
Похожие ответы