Главная » Просмотр файлов » Лабораторные работы МИРЭА 2014

Лабораторные работы МИРЭА 2014 (1017113), страница 9

Файл №1017113 Лабораторные работы МИРЭА 2014 (Лабораторные работы МИРЭА 2014) 9 страницаЛабораторные работы МИРЭА 2014 (1017113) страница 92017-07-08СтудИзба
Просмтор этого файла доступен только зарегистрированным пользователям. Но у нас супер быстрая регистрация: достаточно только электронной почты!

Текст из файла (страница 9)

. . .

X xl (1, 2) , x2 = xl;

В этом случае происходит инициализация объекта х2 побитовым копированием всех полей объекта xl. Здесь конструктор копирования имеет форму скрытого вызова. Можно также сделать копирование явным.

#include <iostream.h>

class X{

int m;

public:

X (int i) {m = i;}

void print ();

X (X const &x) /* xэто формальное обозначение объекта

класса. Этот конструктос копирования создаст новый объект. */

{ m = x.m; }

};

void main ()

{

X a(1);

X b = a;

/* С помощью объекта а: */

system("chcp 1251");

cout << "\nС помощью объекта a: ";

a.print();

/* С помощью объекта b: */

cout << С прмрщью объекта b: ";

b.print();

getchar();

}

/* Описание функции print()*/

void X::print()

{cout << "m = " << m << endl;}

Деструктор класса.

Суть этой функции – обратная сути функции конструктора. Она призвана разрушить созданный конструтором экземпляр класса и освободить от него память. Имя деструктора совпадает с именем класса, но перед ним указывается знак «тильда» (~). Деструктор у класса должен быть один.



Задания для самостоятельной работы

При выполнении задания к данной лабораторной работе необходимо:

Написать программу, демонстрирующую работу с классом согласно варианту задания.

  • Создать проект – консольное приложение.

  • Создайте класс, имеющий несколько конструкторов, включая конструктор по умолчанию, перегруженный конструктор и конструктор копирования. Предусмотрите возможность значения параметров по умолчанию.

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

  • В одном классе наследнике переопределите какой-нибудь метод.

  • Предусмотрите возможность вызова в наследнике конструктора основного класса

  • Определите последовательность вызова конструкторов и деструкторов при создании объекта класса наследника.

Задания для самостоятельной работы

Вариант 1

Создайте класс Int. имитирующий стандартный тип int. Единственное поле этого класса должно иметь тип int. Создайте методы, которые будут устанавливать значение поля, равным нулю, инициализировать его целым значением, выводить значение поля на экран и складывать два значения типа Int.

Вариант 2

Создайте класс с именем Time, содержащий три поля типа char предназначенные для хранения часов, минут и секунд. Один из конструкторов класса должен инициализировать поля нулевыми значениями, а другой конструктор — заданным набором значений. Создайте метод класса, который будет выводить значения полей на экран в формате 11:59:59. и метод, складывающий значения двух объектов типа Time, передаваемых в качестве аргументов.

Вариант 3

1). Создайте класс с именем Date. Его данные должны размешаться в трех полях тина int; Month, Day и Year. Метод класса Getdate() должен принимать значение для объекта в формате 12/05/09, а метод Showdate() — выводить данные на экран в формате 12 мая 2009г.

Вариант 4

1). Создайте класс, имитирующий работу пункта для взимания платежей за проезд по автостраде. Каждая проезжающая машина должна заплатить за проезд n руб, однако часть машин платит за проезд, а часть проезжает бесплатно. В кассе ведется учет числа проехавших машин и суммарная выручка от платы за проезд.

Класс должен содержать три поля. Одно из них типа unsigned int предназначено для учета количества проехавших автомобилей, второе, имеющее тип double, будет содержать суммарную выручку от оплаты проезда, а третье константное поле – плату за проезд. Конструктор должен инициализировать два поля нулевыми значениями, а третье значением заданным пользователем. Метод payingCar() инкрементирует число машин и увеличивает на значение константного поля суммарную выручку. Другой метод. nopayCar(). увеличивает на единицу число автомобилей, но оставляет без изменения выручку. Метод display() выводит оба значения на экран.

Вариант 5

Создайте класс Fraction. Данные класса должны быть представлены двумя полями: числителем и знаменателем. Методы класса должны получать от пользователя значения числителя и знаменателя дроби в формате 3/5 и выводить значение дроби в этом же формате. Кроме того, должен быть разработан метод, складывающий значения двух дробей. Напишите программу, которая циклически запрашивает у пользователя ввод пары дробей, затем складывает их и выводит результат на экран. После каждой такой операции программа должна спрашивать пользователя, следует ли продолжать цикл.

Вариант 6

Создайте класс Employee. Класс должен включать поле типа int для хранения номера сотрудника, поле типа std::string для хранения ФИО сотрудника и поле типа float для хранения величины его оклада. Методы класса должны позволять пользователю вводить и отображать данные класса. Создайте программу, демонстрирующую работу класса. Напишите программу, создающую массив типа Employee, а затем предложить пользователю внести данные для 10 служащих. После этого необходимо вывести данные всех служащих на экран компьютера.

Вариант 7

Создайте класс Money имитирующий денежный тип с фиксированной десятичной точкой. Данные класса должны быть представлены двумя полями: количеством рублей (тип long) и количеством копеек (тип char). Методы класса должны получать от пользователя строку в формате 4 000 678 889,88 руб и выводить значение в этом же формате. Кроме того, должен быть разработан метод, складывающий значения двух денежных величин. Напишите программу, выводящую на экран сумму всех денежных величин введенных пользователем.

Вариант 8

Напишите класс SafeArray который использует массив типа int фиксированного размера. В классе необходимо описать два метода. Первый, Set(). принимает индекс и значение типа int как аргументы и вставляет это значение в массив по заданному индексу. Второй, Get(), принимает индекс как аргумент и возвращает значение типа int, содержащееся в элементе с этим индексом. Оба метода должны проверять индекс аргумента, чтобы быть уверенными, что он не выходит за размеры массива.

Вариант 9

Создать класс Date для работы с датами в формате «год, месяц день». Дата представляется структурой с тремя полями типа unsigned int: для года, месяца и дня. Класс должен включать не менее трех функций инициализации: числами, строкой вида «год, месяц, день» (например. «2004.08.31») и датой. Обязательными операциями являются: вычисление даты через заданное количество дней, вычитание заданного количества дней из даты, определение високосности года, присвоение и получение отдельных частей (год, месяц, день), сравнение дат (равно, до, после), вычисление количества дней между датами.

Вариант 10

Рациональная (несократимая) дробь представляется парой целых чисел (а, b), где а — числитель. b — знаменатель. Создать класс Rational для работы с рациональными дробями. Обязательно должны быть реализованы операции:

  • сложения add, (a, b) + (c,d) = (ad + be, bd);

  • вычитания sub, (а, b) − (с, d) = (ad − be, bd);

  • умножения mul, (a, b) * (с, d) = (ас, bd);

  • деления div, (a, b) / (c,d) = (ad, be);

Вариант 11

Создать класс Money для работы с денежными суммами. Число должно быть представлено двумя полями: типа long для рублей и типа unsigned char — для копеек. Дробная часть (копейки) при выводе на экран должна быть отделена от целой части запятой. Реализовать сложение, вычитание, деление сумм, деление суммы на дробное число, умножение на дробное число и операции сравнения.

Вариант 12

Создать класс Angle для работы с углами на плоскости, задаваемыми величиной в градусах и минутах. Обязательно должны быть реализованы: перевод в радианы, приведение к диапазону 0−360º, увеличение и уменьшение угла на заданную величину, получение синуса, сравнение углов.

Вариант 13

Создать класс Time для работы со временем в формате «час:минута:секунда». Класс должен включать в себя не менее четырех функций инициализации: числами, строкой (например, «23:59:59»), секундами и временем. Обязательными операциями являются: вычисление разницы между двумя моментами времени в секундах, сложение времени и заданного количества секунд, вычитание из времени заданного количества секунд, сравнение моментов времени, перевод в секунды, перевод в минуты (с округлением до целой минуты).

Вариант 14

Реализовать класс: Account, представляющий собой банковский счет. В классе должны быть четыре поля: фамилия владельца, номер счета, процент начисления и сумма в рублях. Открытие нового счета выполняется операцией инициализации. Необходимо выполнять следующие операции: сменить владельца счета, снять некоторую сумму денег со счета, положить деньги на счет, начислить проценты, перевести сумму в доллары, перевести сумму в евро, получить сумму прописью (преобразовать в числительное).

Вариант 15

Номиналы российских рублей могут принимать значения 1, 2, 5, 10, 50. 100. 500, 1000, 5000. Копейки представить как 0.01 (1 копейка). 0.05 (5 копеек). 0.1 (10 копеек). 0.5 (50 копеек). Создать класс Money для работы с денежными суммами. Сумма должна быть представлена полями−номиналами, значениями которых должно быть количество купюр данного достоинства. Реализовать сложение сумм, вычитание сумм, деление сумм, деление суммы на дробное число, умножение на дробное число и операции сравнения. Дробная часть (копейки) при выводе на экран должна быть отделена от целой части запятой.

Вариант 16

Написать класс для аффективной работы со строками, позволяющий форматировать и сравнивать строки, хранить в строках числовые значения и извлекать их. Для этого необходимо реализовать:

  • перегруженные операции присваивания и конкатенации;

  • операции сравнения и приведения типов;

  • преобразование в число любого типа;

  • форматный вывод строки.

Вариант 17

Описать класс «записная книжка». Предусмотреть возможность работы с произвольным числом записей, поиска записи по какому−либо признаку (например, по фамилии, дате рождения или номеру телефона), добавления и удаления записей, сортировки по разным полям.

Вариант 18

Создать класс Fraction для работы с дробными числами. Число должно быть представлено двумя нолями, целая часть длинное целое со знаком, дробная часть — беззнаковое короткое целое. Реализовать арифметические операции сложения, вычитания, умножения и операции сравнения.

Вариант 19

Создать класс Goods (товар). В классе должны быть представлены данные−члены: наименование товара, дата оформления, цена товара, количество единиц товара, номер накладной, по которой товар поступил на склад. Реализовать методы изменения цены товара, изменения количества товара (увеличения и уменьшения), вычисления стоимости товара. Метод toString() должен выдавать в виде строки стоимость товара.

Вариант 20

Описать класс «множество», позволяющий выполнять основные операции — добавление и удаление элемента, пересечение, объединение и разность множеств.

Контрольные вопросы:

  1. Как создать проект – консольное приложение?

  2. Что такое файл исходного кода? Как добавить такой файл в проект?

  3. Как запускается проект в режиме отладки?

  4. Что такое развертывание программы?

  5. Определение класса? Структура класса?

  6. Конструкторы и деструкторы класса?

  7. Основные принципы построения классов

  8. Спецификаторы доступа ?

  9. Экземпляры класса ?

  10. Инициализация данных объекта?

  11. Переопределение операций?

  12. Что такое объект, и каким образом объекты соединяются в систему для решения задачи?

  13. Чем характеризуется объект?

  14. Каким образом в программных объектах реализуются состояние, поведение и идентификация объектов предметной области?

  15. Что такое переопределение операций? Какие операции можно переопределять?

  16. В какой последовательности происходит вызов конструкторов и деструкторов при создании объектов.

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

НАСЛЕДОВАНИЕ

Цель работы: изучение особенностей техники открытого и закрытого наследования в свете концепции объектно-ориентированного программирования.

Длительность выполнения работы: 2 часа.

Краткие теоретические сведения

Наследование – один из принципов построения классов. Классы в общем случае могут составлять иерархию: один класс получается из другого, на основании другого получается третий и т.д. То есть речь идет о том, что и в классах существуют родители и дети. Наследование предполагает, что все характеристики класса-родителя присваиваются классу-потомку. После этого потомку при необходимости добавляют новые характеристики. Иногда некоторые методы в классе-потомке, полученном от предков, переопределяются, т.е. наполняются новым содержанием.

Наследование используется не только при разработке классов, но и при проектировании приложения. Например, в C++Builder есть класс Label (метка). Если поместить экземпляр этой метки в форму (экземпляр Form), то свойство «шрифт» метки примет значение свойства «шрифт» из экземпляра Form. Меняя параметры шрифта у родителя (Form), мы добиваемся изменения этих параметров у потомков (наследников). То есть метка автоматически будет наследовать это свойство от экземпляра Form, на который она помещена. Это же относится, например, и к классу Button (кнопка).

Простым (или одиночным) называется наследование, при котором производный класс имеет только одного родителя. Формально наследование одного класса от другого задается следующей конструкций:

class имя_класса_потомка: [модификатор_доступа] имя_базового_класса

{ тело_класса };

Характеристики

Тип файла
Документ
Размер
3,06 Mb
Тип материала
Высшее учебное заведение

Список файлов лабораторной работы

Свежие статьи
Популярно сейчас
Почему делать на заказ в разы дороже, чем купить готовую учебную работу на СтудИзбе? Наши учебные работы продаются каждый год, тогда как большинство заказов выполняются с нуля. Найдите подходящий учебный материал на СтудИзбе!
Ответы на популярные вопросы
Да! Наши авторы собирают и выкладывают те работы, которые сдаются в Вашем учебном заведении ежегодно и уже проверены преподавателями.
Да! У нас любой человек может выложить любую учебную работу и зарабатывать на её продажах! Но каждый учебный материал публикуется только после тщательной проверки администрацией.
Вернём деньги! А если быть более точными, то автору даётся немного времени на исправление, а если не исправит или выйдет время, то вернём деньги в полном объёме!
Да! На равне с готовыми студенческими работами у нас продаются услуги. Цены на услуги видны сразу, то есть Вам нужно только указать параметры и сразу можно оплачивать.
Отзывы студентов
Ставлю 10/10
Все нравится, очень удобный сайт, помогает в учебе. Кроме этого, можно заработать самому, выставляя готовые учебные материалы на продажу здесь. Рейтинги и отзывы на преподавателей очень помогают сориентироваться в начале нового семестра. Спасибо за такую функцию. Ставлю максимальную оценку.
Лучшая платформа для успешной сдачи сессии
Познакомился со СтудИзбой благодаря своему другу, очень нравится интерфейс, количество доступных файлов, цена, в общем, все прекрасно. Даже сам продаю какие-то свои работы.
Студизба ван лав ❤
Очень офигенный сайт для студентов. Много полезных учебных материалов. Пользуюсь студизбой с октября 2021 года. Серьёзных нареканий нет. Хотелось бы, что бы ввели подписочную модель и сделали материалы дешевле 300 рублей в рамках подписки бесплатными.
Отличный сайт
Лично меня всё устраивает - и покупка, и продажа; и цены, и возможность предпросмотра куска файла, и обилие бесплатных файлов (в подборках по авторам, читай, ВУЗам и факультетам). Есть определённые баги, но всё решаемо, да и администраторы реагируют в течение суток.
Маленький отзыв о большом помощнике!
Студизба спасает в те моменты, когда сроки горят, а работ накопилось достаточно. Довольно удобный сайт с простой навигацией и огромным количеством материалов.
Студ. Изба как крупнейший сборник работ для студентов
Тут дофига бывает всего полезного. Печально, что бывают предметы по которым даже одного бесплатного решения нет, но это скорее вопрос к студентам. В остальном всё здорово.
Спасательный островок
Если уже не успеваешь разобраться или застрял на каком-то задание поможет тебе быстро и недорого решить твою проблему.
Всё и так отлично
Всё очень удобно. Особенно круто, что есть система бонусов и можно выводить остатки денег. Очень много качественных бесплатных файлов.
Отзыв о системе "Студизба"
Отличная платформа для распространения работ, востребованных студентами. Хорошо налаженная и качественная работа сайта, огромная база заданий и аудитория.
Отличный помощник
Отличный сайт с кучей полезных файлов, позволяющий найти много методичек / учебников / отзывов о вузах и преподователях.
Отлично помогает студентам в любой момент для решения трудных и незамедлительных задач
Хотелось бы больше конкретной информации о преподавателях. А так в принципе хороший сайт, всегда им пользуюсь и ни разу не было желания прекратить. Хороший сайт для помощи студентам, удобный и приятный интерфейс. Из недостатков можно выделить только отсутствия небольшого количества файлов.
Спасибо за шикарный сайт
Великолепный сайт на котором студент за не большие деньги может найти помощь с дз, проектами курсовыми, лабораторными, а также узнать отзывы на преподавателей и бесплатно скачать пособия.
Популярные преподаватели
Добавляйте материалы
и зарабатывайте!
Продажи идут автоматически
6384
Авторов
на СтудИзбе
308
Средний доход
с одного платного файла
Обучение Подробнее