Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.80/41: Рейтинг темы: голосов - 41, средняя оценка - 4.80
0 / 0 / 0
Регистрация: 30.06.2014
Сообщений: 4

Определить класс Exam, который имеет три открытых автореализуемых свойства

01.02.2015, 02:03. Показов 7825. Ответов 7
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Не могу понять как сделать пункт 3. Помогите, пожалуйста, новичку

1)Определить класс Exam, который имеет три открытых автореализуемых свойства, доступных для чтения и записи:
  • свойство типа string, в котором хранится название предмета
  • свойство типа int, в котором хранится оценка
  • свойство типа System.DateTime для даты экзамена
2) В классе Exam определить:
  • конструктор с параметрами типа string, int и DateTime для инициализации всех свойств класса
  • конструктор без параметров, инициализирующий все свойства класса некоторыми значениями по умолчанию
  • перегруженную(override) версию виртуального метода string ToString() для формирования строки со значениями всех свойств класса


3) В классе Student определить:
  • закрытое поле типа Exam [] для информации об экзаменах, которые сдал студент
  • свойство типа Exam [] для доступа к полю со списком экзаменов
  • метод void AddExams ( params Exam [] ) для добавления элементов в список экзаменов

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
   
class Exam
    {
        public string str_Predmet {get; set;}
        public int int_Ocenka { get; set; }
        public DateTime dt_DExam { get; set; }
 
 
 
        public Exam (string Predmet,int Ocenka, DateTime DExam)
        {
            str_Predmet = Predmet;
            int_Ocenka = Ocenka;
            dt_DExam = DExam;
        }
 
         private Exam ()
        {
            str_Predmet = "Default_Predmet";
            int_Ocenka = 5;
            dt_DExam = new DateTime(2008, 6, 1);
        }
 
         public override string ToString()
         {
             return str_Predmet + " " + int_Ocenka + " " + dt_DExam;
         }
       
    }
 
class Student
    {
 
        private Exam [] infExamStud;
 
       Exam [] f_infExamStud
        {
            get
            {
                return infExamStud;
            }
            set
            {
 
            }
        }
 
       void AddExams(params Exam[] infExamStud)
        {
          
        }
0
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
01.02.2015, 02:03
Ответы с готовыми решениями:

автореализуемых свойства, доступных для чтения и записи
"автореализуемых свойства, доступных для чтения и записи" - можете объяснить подробно! И пример какой-то..

Создать класс, который имеет параметризованный метод, который рассчитывает, простое ли число
Создать класс, который имеет параметризованный метод, который рассчитывает, простое ли число.

написать макрос,который по произвольному тексту определяет, имеет ли этот текст определенные свойства
Написать макрос, который по произвольному тексту определяет, имеет ли этот текст определенные свойства (зависящие от варианта). Макрос...

7
Master of Orion
Эксперт .NET
 Аватар для Psilon
6102 / 4958 / 905
Регистрация: 10.07.2011
Сообщений: 14,522
Записей в блоге: 5
01.02.2015, 03:13
Лучший ответ Сообщение было отмечено Nerviek как решение

Решение

Nerviek,
1. конструкторы можно наследовать, поэтому не надо дублировать (см. ниже)
2. Не надо писать в имя поля его тип - это устарело еще в конце прошлого тысячелетия (я не шучу, уже в конце 90х так мало кто писал )
3. учитесь правильно форматировать строки, а не просто складывать
4. Массив тут использовать не получится, т.к. количество экзаменов может меняться, а массив нужно применять только когда его длина фиксирована.
5. Возвращать метод желательно должен IReadOnlyList, чтобы нельзя было "халтурить" и добавлять такие экзамены, которых студент не сдавал.
6. Последнее по порядку, но далеко не по-важности - именуйте по-английски всё. Все эти Predmet и Ocenka - очень грустно делают


В итоге получаем что-то такое:
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
    public class Exam
    {
        public string Name { get; set; }
        public int Grade { get; set; }
        public DateTime Occured { get; set; }
 
 
        public Exam(string name, int grade, DateTime occured)
        {
            Name = name;
            Grade = grade;
            Occured = occured;
        }
 
        private Exam() : this("Default", 5, new DateTime(2008, 6, 1))
        {}
 
        public override string ToString()
        {
            return string.Format("Student passed an exam {0} for a grade {1}. Occured = {2}", Name, Grade, Occured);
        }
    }
 
    public class Student
    {
        private readonly List<Exam> _passedExams = new List<Exam>();
 
        public IReadOnlyList<Exam> PassedExams
        {
            get { return _passedExams.AsReadOnly();}
        }
 
        public void AddExams(params Exam[] exams)
        {
            _passedExams.AddRange(exams);
        }
    }
1
2 / 2 / 0
Регистрация: 19.12.2013
Сообщений: 216
10.10.2015, 01:34
Nerviek, Подскажите пожалуйста как в строку , об экзаменах, которые сдал студент:
----------------------------------------------------------------------------------------------------------------------------------------------
C#
1
2
private List< Exam > _passedExams = new List< Exam >();
//закрытое поле типа Exam [], в котором хранится список экзаменов
----------------------------------------------------------------------------------------------------------------------------------------------
внести конкретные экзамены. Пробовал вот таким образом , не получается :
C#
1
2
3
4
 List< Exam > _passedExams = new List< Exam >();        
        _passedExams.Add("Exam 1");
        _passedExams.Add("Exam 2");
        _passedExams.Add("Exam 3");
0
116 / 116 / 70
Регистрация: 10.11.2013
Сообщений: 445
10.10.2015, 01:50
Цитата Сообщение от Владимирл Посмотреть сообщение
внести конкретные экзамены. Пробовал вот таким образом , не получается :
List< Exam > _passedExams = new List< Exam >();
_passedExams.Add("Exam 1");
_passedExams.Add("Exam 2");
_passedExams.Add("Exam 3");
Ну во-первых, нет смысла пересоздавать объект списка, т.к. судя по всем, он создаётся при объявлении.
И вот если этот код
C#
1
2
3
_passedExams.Add("Exam 1");
_passedExams.Add("Exam 2");
_passedExams.Add("Exam 3");
Написать в конструкторе -- всё будет работать.

А если имеется в виду, что поле объекта нужно изменить где-то из вне (метод мэин, скорее всего, в вашем случае). То стоит написат public метод, который будет добавлять определённый экзамен (или сразу params) в ваш лист.
0
2 / 2 / 0
Регистрация: 19.12.2013
Сообщений: 216
10.10.2015, 16:10
Anderok, Не знаю как построить свои действия в соответствии с данными пунктами . Теорию читал , разбирал . Отдельные части программы есть представление как делать . А общего представления нет .


Определить класс ResearchTeam , который имеет :

?1 закрытое поле типа Paper*+, в котором хранится список публикаций.
?2 свойство типа Paper*+ для доступа к полю со списком публикаций по теме исследований
В классе ResearchTeam определить :
?3 метод void AddPapers ( params Paper[] ) для добавления элементов в список публикаций;

В методе Main() :
?4 С помощью метода AddPapers (params Paper *+) добавить элементы в список публикаций и вывести данные объекта ResearchTeam.
0
116 / 116 / 70
Регистрация: 10.11.2013
Сообщений: 445
10.10.2015, 18:59
Владимирл,
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
class Program
    {
        static void Main(string[] args)
        {
            var student1 = new Student();
            var exam1 = new Exam("Math", 5, DateTime.Now);
            var exam2 = new Exam("Economic", 3, new DateTime(2008, 6, 1));
 
            student1.AddExams(exam1, exam2);
        }
    }
 
    public class Exam
    {
        public string Name { get; private set; }
        public int Grade { get; private set; }
        public DateTime Occured { get; private set; }
 
 
        public Exam(string name, int grade, DateTime occured)
        {
            Name = name;
            Grade = grade;
            Occured = occured;
        }
 
        public Exam()
            : this("Default", 5, new DateTime(2008, 6, 1))
        { }
 
        public override string ToString()
        {
            return string.Format("Student passed an exam {0} for a grade {1}. Occured = {2}", Name, Grade, Occured);
        }
    }
 
    public class Student
    {
        private readonly List<Exam> _passedExams = new List<Exam>();
 
        public List<Exam> PassedExams
        {
            get { return (_passedExams.ToArray().Clone() as Exam[]).ToList(); }
        }
 
        public void AddExams(params Exam[] exams)
        {
            if (exams != null && exams.Any())
            {
                _passedExams.AddRange(exams);
            }
        }
    }
Вот так, например. Я слегка модифицировал код Psilon,
0
2 / 2 / 0
Регистрация: 19.12.2013
Сообщений: 216
11.10.2015, 16:59
Anderok, Разбираюсь со строкой : get { return (_passedExams.ToArray().Clone() as Exam[]).ToList(); }
Как-то не очень понятно . Почему Exam[ ] , а не Exam[ ]” имя массива ” ? В книге Т.А. Павловской и в Интернете подобное не нашел .
0
116 / 116 / 70
Регистрация: 10.11.2013
Сообщений: 445
12.10.2015, 03:28
Владимирл, вообще говоря, не исключаю, что это плохой код.

...

Писал ответ и понял, что это вообще полный отстой.

Там короче, приведение типа после deep-copy (потому как clone возвращает object). Такой синтаксис.

Вообще правильнее будет реализовать у Exam ICloneable и возвращать new List<Exam>(_passedExams.Select(x => x.Clone()).ToList());
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
12.10.2015, 03:28
Помогаю со студенческими работами здесь

Создать класс вектор, который имеет указатель на double
Создать абстрактный тип данных - класс вектор, который имеет указатель на double, число элементов и переменную состояния. Определить...

Проинициализировать класс массивов который имеет конструктор по умолчанию
Или я не знаю как правельно спрасить у гуглы,или это не возможно,кто знает как можно реализовать такое class a { int q,w,e; ...

Написать класс, который изменяет свойства компонента DataGridView
У меня на форме размещено 3 пустых компонента DataGridView, хочу создать класс который позволит мне быстро изменять свойства данных...

Разработать шаблонный класс Deque, который имеет следующие методы:
- addBegin(n) - добавление в начало дека - addEnd(n) - добавление в конец дека - T outBegin() - взять элемент из начала, элемент...

Создать класс который имеет методы для вычисления значений переменных
Народ кто шарит подскажите задачи легкие но проблема что джаву не учила а через 2 дня нужно сдать( создать класс который имеет...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru