Главная страница
Навигация по странице:

  • // по умолчанию раздел private – частные члены класса public : // открытые функции и переменные класса };

  • { /*тело функции*/ } Вызов функций осуществляется одним из двух способов: имя_объекта.имя_функции(аргументы); указатель_на_объект -> имя_функции(аргументы);

  • Лабораторная работа 2_cpp. Лабораторная работа 2 Тема. Простейшие классы и объекты Теоретическое введение


    Скачать 73 Kb.
    НазваниеЛабораторная работа 2 Тема. Простейшие классы и объекты Теоретическое введение
    Дата09.11.2021
    Размер73 Kb.
    Формат файлаdoc
    Имя файлаЛабораторная работа 2_cpp.doc
    ТипЛабораторная работа
    #267387

    Лабораторная работа № 2


    Тема. Простейшие классы и объекты

    Теоретическое введение. Классы представляют абстрактные типы данных с открытым интерфейсом и скрытой внутренней реализацией. В классах реализованы базовые принципы объектно- ориентированного программирования(ООП):

    1. абстракция данных;

    2. инкапсуляция – в классах объединяются данные и методы (функции) для работы с ними, так как лишь через методы возможен доступ к сокрытым данным класса;

    3. наследование – в производных классах наследуются члены базового класса;

    4. полиморфизм – возможность использования одних и тех же методов для работы с различными объектами базового и порожденных им классов.

    Определение простейшего класса без наследования имеет вид:

    class имя_класса {


    // по умолчанию раздел private – частные члены класса

    public: // открытые функции и переменные класса

    };

    Имя класса является новым типом данных. Понятию переменной данного типа соответствует понятие объекта класса. Список членов класса включает описание данных и функций. Функции, описания которых находятся в определении класса, называются функциями- членами класса.

    Переменные и функции, объявленные в разделе класса по умолчанию или явно как private, имеют область видимости в пределах класса. Их можно сделать видимыми вне класса, если объявить в разделе public:. Обычно переменные объявляются в разделе private, а функции в разделе public.

    Классами в С++ являются также структуры (struct) и объединения (union). В отличие от класса члены структуры по умолчанию являются открытыми, а не закрытыми. Кроме того, объединения не могут наследоваться и наследовать.

    При реализации функциональной части класса могут быть использованы функции-члены класса, конструкторы, деструкторы, функции-операторы. Функции класса всегда объявляются внутри класса. Определение функции может находиться и внутри класса. Такие функции называются inline-функциями. Обычно определения

    функций-членов класса помещаются вне класса. При этом перед именем функции указывается имя_класса:: .

    тип имя_класса:: имя_функции (описание аргументов)


    { /*тело функции*/ }

    Вызов функций осуществляется одним из двух способов: имя_объекта.имя_функции(аргументы); указатель_на_объект -> имя_функции(аргументы);

    Обращение к данным объекта класса осуществляется с помощью функций, вызываемых из объектов. При этом функции-члену класса передается скрытый указатель thisна объект, вызывающий функцию.

    Функции-«друзья» класса, объявляемые в классе со спецификатором friend, указатель thisне содержат. Объекты, с которыми работают такие функции, должны передаваться в качестве их аргументов. Это обычные функции языка С++, которым разрешен доступ к закрытым членам класса.

    Пример.


    /* Создается класс Student. Формируется динамический массив объектов. При тестировании выводится: сформированный список студентов, список студентов заданного факультета, список студентов для заданных факультета и курса.*/

    #include

    #include

    #include struct date // дата рождения

    {char daymon[6]; int year; };

    //======= class Student ================= class Student{

    char name[30]; //private date t;

    char adr[30], fac[20]; int kurs;

    public: Student(); char *getfac(); int getkurs(); void show();

    };

    Student::Student()

    {cout<<"Input name:"; cin>>name; cout<<"Input date of born\n"; cout<<"Day.mon:"; cin>>t.daymon; cout<<"Year:"; cin>>t.year; cout<<"Input adr:"; cin>>adr; cout<<"Input fac:"; cin>>fac;

    cout<<"Input kurs:"; cin>>kurs;

    }

    void Student::show()

    {

    cout<<"Name :"<
    cout<<"Was born :"<
    cout<<"Fac :"<
    }

    char *Student::getfac() { return fac; } int Student::getkurs() { return kurs; }

    void spisfac(Student spis[],int n)//список студентов заданного факультетата

    {char fac[20];

    cout<<"Input faculty:"; cin>>fac; for(int i=0;i
    if(strcmp(spis[i].getfac(),fac)==0)spis[i].show();

    }

    void spisfackurs(Student spis[],int n)

    //список студентов заданных факультета и курса

    {int i,k;

    char fac[20];

    cout<<"Input faculty:"; cin>>fac; cout<<"Input the course:"; cin>>k; for(i=0;i
    if ((strcmp(spis[i].getfac(),fac)==0)&&(spis[i].getkurs()==k)) spis[i].show();

    }

    //========= main ================

    void main()

    { Student *spis; int n;

    cout<<"Input a number of students: "; cin>>n; spis=new Student [n];

    for(int i=0;i
    spis[i].show();

    }

    spisfac(spis,n); spisfackurs(spis,n); delete [] spis; cout<<"press any key!" while(!kbhit());

    }

    Задания для самостоятельного решения


    Разработать классы для описанных ниже объектов. Включить в класс методы set (…), get (…), show (…). Определить другие методы.

    1. Student: Фамилия, Имя, Отчество, Дата рождения, Адрес, Телефон, Факультет, Курс. Создать массив объектов. Вывести:

    а) список студентов заданного факультета;

    2. Abiturient: Фамилия, Имя, Отчество, Адрес, Оценки. Создать массив объектов. Вывести:

    а) список абитуриентов, имеющих неудовлетворительные оценки; 3. Aeroflot: Пункт назначения, Номер рейса, Тип самолета, Время вылета, Дни недели. Создать массив объектов. Вывести:

    а) список рейсов для заданного пункта назначения; б) список рейсов для заданного дня недели;

    в) список рейсов для заданного дня недели, время вылета для которых больше заданного.

    4. Book: Автор, Название, Издательство, Год, Количество страниц. Создать массив объектов. Вывести:

    а) список книг заданного автора;

    б) список книг, выпущенных заданным издательством; в) список книг, выпущенных после заданного года.

    5. Worker: Фамилия и инициалы, Должность, Год поступления на

    работу, Зарплата. Создать массив объектов. Вывести список работников.

    6. Train: Пункт назначения, Номер поезда, Время отправления, Число общих мест, Купейных, Плацкартных. Создать массив объектов. Вывести:

    а) список поездов, следующих до заданного пункта назначения;

    7. Product: Наименование, Производитель, Цена, Срок хранения, Количество. Создать массив объектов. Вывести:

    а) список товаров для заданного наименования;

    в) список товаров, срок хранения которых больше заданного.

    8. Patient: Фамилия, Имя, Отчество, Адрес, Номер медицинской

    карты, Диагноз. Создать массив объектов. Вывести:

    а) список пациентов, имеющих данный диагноз;

    б) список пациентов, номер медицинской карты которых находится в заданном интервале.

    9. Bus: Фамилия и инициалы водителя, Номер автобуса, Номер

    маршрута, Марка, Год начала эксплуатации, Пробег. Создать массив объектов. Ввести с клавиатуры и вывести данные для трёх различных автобусов.

    10. Customer: Поля класса: Фамилия, Имя, Отчество, Адрес, Телефон. Создать массив объектов. Вывести список покупателей.

    11. File: Имя файла, Размер, Дата создания, Количество обраще-ний. Создать массив объектов. Вывести:

    а) список файлов, упорядоченный в алфавитном порядке;

    12.Word: Слово, Номера страниц, на которых слово встречается (от 1 до 10), Число страниц. Создать массив объектов. Вывести: а) слова, которые встречаются более чем на N страницах;

    13. Student: Фамилия, Имя, Отчество, Дата рождения, Адрес, Теле- фон, Факультет, Курс. Создать массив объектов. Вывести:

    а) список студентов заданного факультета;

    14. Abiturient: Фамилия, Имя, Отчество, Адрес, Оценки. Создать массив объектов. Вывести:

    а) список абитуриентов, имеющих неудовлетворительные оценки; 15. Aeroflot: Пункт назначения, Номер рейса, Тип самолета, Время вылета, Дни недели. Создать массив объектов. Вывести:

    а) список рейсов для заданного пункта назначения; б) список рейсов для заданного дня недели;

    в) список рейсов для заданного дня недели, время вылета для ко- торых больше заданного.

    16. Book: Автор, Название, Издательство, Год, Количество страниц. Создать массив объектов. Вывести:

    а) список книг заданного автора;

    б) список книг, выпущенных заданным издательством; в) список книг, выпущенных после заданного года.

    17. Worker: Фамилия и инициалы, Должность, Год поступления на

    работу, Зарплата. Создать массив объектов. Вывести список работников.

    18. Train: Пункт назначения, Номер поезда, Время отправления, Число общих мест, Купейных, Плацкартных. Создать массив объек- тов. Вывести:

    а) список поездов, следующих до заданного пункта назначения;

    19. Product: Наименование, Производитель, Цена, Срок хранения, Количество. Создать массив объектов. Вывести:

    а) список товаров для заданного наименования;

    в) список товаров, срок хранения которых больше заданного.

    20. Patient: Фамилия, Имя, Отчество, Адрес, Номер медицинской

    карты, Диагноз. Создать массив объектов. Вывести:

    а) список пациентов, имеющих данный диагноз;

    б) список пациентов, номер медицинской карты которых находится в заданном интервале.

    21. Bus: Фамилия и инициалы водителя, Номер автобуса, Номер

    маршрута, Марка, Год начала эксплуатации, Пробег. Создать массив объектов. Ввести с клавиатуры и вывести данные для трёх различных автобусов.

    22. Customer: Поля класса: Фамилия, Имя, Отчество, Адрес, Телефон. Создать массив объектов. Вывести список покупателей.

    23. File: Имя файла, Размер, Дата создания, Количество обраще-ний. Создать массив объектов. Вывести:

    а) список файлов, упорядоченный в алфавитном порядке;

    24. Word: Слово, Номера страниц, на которых слово встречается (от 1 до 10), Число страниц. Создать массив объектов. Вывести: а) слова, которые встречаются более чем на N страницах;

    25. Student: Фамилия, Имя, Отчество, Дата рождения, Адрес, Теле- фон, Факультет, Курс. Создать массив объектов. Вывести:

    а) список студентов заданного факультета;

    26. Abiturient: Фамилия, Имя, Отчество, Адрес, Оценки. Создать массив объектов. Вывести:

    а) список абитуриентов, имеющих неудовлетворительные оценки; 27. Aeroflot: Пункт назначения, Номер рейса, Тип самолета, Время вылета, Дни недели. Создать массив объектов. Вывести:

    а) список рейсов для заданного пункта назначения; б) список рейсов для заданного дня недели;

    в) список рейсов для заданного дня недели, время вылета для ко- торых больше заданного.

    28. Book: Автор, Название, Издательство, Год, Количество страниц. Создать массив объектов. Вывести:

    а) список книг заданного автора;

    б) список книг, выпущенных заданным издательством; в) список книг, выпущенных после заданного года.

    29. Worker: Фамилия и инициалы, Должность, Год поступления на

    работу, Зарплата. Создать массив объектов. Вывести список работников.

    30. Train: Пункт назначения, Номер поезда, Время отправления, Число общих мест, Купейных, Плацкартных. Создать массив объек- тов. Вывести:

    а) список поездов, следующих до заданного пункта назначения;

    31. Product: Наименование, Производитель, Цена, Срок хранения, Количество. Создать массив объектов. Вывести:

    а) список товаров для заданного наименования;

    в) список товаров, срок хранения которых больше заданного.

    32. Patient: Фамилия, Имя, Отчество, Адрес, Номер медицинской

    карты, Диагноз. Создать массив объектов. Вывести:

    а) список пациентов, имеющих данный диагноз;

    б) список пациентов, номер медицинской карты которых находится в заданном интервале.

    33. Bus: Фамилия и инициалы водителя, Номер автобуса, Номер

    маршрута, Марка, Год начала эксплуатации, Пробег. Создать массив объектов. Ввести с клавиатуры и вывести данные для трёх различных автобусов.

    34. Customer: Поля класса: Фамилия, Имя, Отчество, Адрес, Телефон. Создать массив объектов. Вывести список покупателей.

    35. File: Имя файла, Размер, Дата создания, Количество обраще-ний. Создать массив объектов. Вывести:

    а) список файлов, упорядоченный в алфавитном порядке;

    36.Word: Слово, Номера страниц, на которых слово встречается (от 1 до 10), Число страниц. Создать массив объектов. Вывести: а) слова, которые встречаются более чем на N страницах;


    написать администратору сайта