Лабораторная работа 2_cpp. Лабораторная работа 2 Тема. Простейшие классы и объекты Теоретическое введение
Скачать 73 Kb.
|
Лабораторная работа № 2Тема. Простейшие классы и объекты Теоретическое введение. Классы представляют абстрактные типы данных с открытым интерфейсом и скрытой внутренней реализацией. В классах реализованы базовые принципы объектно- ориентированного программирования(ООП): абстракция данных; инкапсуляция – в классах объединяются данные и методы (функции) для работы с ними, так как лишь через методы возможен доступ к сокрытым данным класса; наследование – в производных классах наследуются члены базового класса; полиморфизм – возможность использования одних и тех же методов для работы с различными объектами базового и порожденных им классов. Определение простейшего класса без наследования имеет вид: class имя_класса {// по умолчанию раздел private – частные члены класса public: // открытые функции и переменные класса }; Имя класса является новым типом данных. Понятию переменной данного типа соответствует понятие объекта класса. Список членов класса включает описание данных и функций. Функции, описания которых находятся в определении класса, называются функциями- членами класса. Переменные и функции, объявленные в разделе класса по умолчанию или явно как private, имеют область видимости в пределах класса. Их можно сделать видимыми вне класса, если объявить в разделе public:. Обычно переменные объявляются в разделе private, а функции в разделе public. Классами в С++ являются также структуры (struct) и объединения (union). В отличие от класса члены структуры по умолчанию являются открытыми, а не закрытыми. Кроме того, объединения не могут наследоваться и наследовать. При реализации функциональной части класса могут быть использованы функции-члены класса, конструкторы, деструкторы, функции-операторы. Функции класса всегда объявляются внутри класса. Определение функции может находиться и внутри класса. Такие функции называются inline-функциями. Обычно определения функций-членов класса помещаются вне класса. При этом перед именем функции указывается имя_класса:: . тип имя_класса:: имя_функции (описание аргументов){ /*тело функции*/ } Вызов функций осуществляется одним из двух способов: имя_объекта.имя_функции(аргументы); указатель_на_объект -> имя_функции(аргументы); Обращение к данным объекта класса осуществляется с помощью функций, вызываемых из объектов. При этом функции-члену класса передается скрытый указатель thisна объект, вызывающий функцию. Функции-«друзья» класса, объявляемые в классе со спецификатором friend, указатель thisне содержат. Объекты, с которыми работают такие функции, должны передаваться в качестве их аргументов. Это обычные функции языка С++, которым разрешен доступ к закрытым членам класса. Пример./* Создается класс Student. Формируется динамический массив объектов. При тестировании выводится: сформированный список студентов, список студентов заданного факультета, список студентов для заданных факультета и курса.*/ #include #include #include {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 страницах; |