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

  • Dev-C v.5.11

  • Деструктором

  • Классы. Открытые и закрытые уровни уровни доступа. Конструкторы. Инициализация данных объекта. Определение методов. Создание объ. Тема Классы. Открытые и закрытые уровни доступа. Конструкторы. Инициализация данных объекта. Определение методов. Создание объекта в памяти. Стандартные потоки вводавывода. Используемое методическое и программное обеспечение


    Скачать 47.58 Kb.
    НазваниеТема Классы. Открытые и закрытые уровни доступа. Конструкторы. Инициализация данных объекта. Определение методов. Создание объекта в памяти. Стандартные потоки вводавывода. Используемое методическое и программное обеспечение
    АнкорКлассы. Открытые и закрытые уровни уровни доступа. Конструкторы. Инициализация данных объекта. Определение методов. Создание объ
    Дата11.04.2022
    Размер47.58 Kb.
    Формат файлаdocx
    Имя файлаlab_rab_OOP1_v1.docx
    ТипОтчет
    #463560


    ОТЧЕТ

    по лабораторной работе №1
     «Классы. Открытые и закрытые уровни уровни доступа. Конструкторы. Инициализация данных объекта. Определение методов. Создание объекта в памяти. Стандартные потоки ввода-вывода».

    Вариант № 22


    Оглавление



    Тема: Классы. Открытые и закрытые уровни доступа. Конструкторы. Инициализация данных объекта. Определение методов. Создание объекта в памяти. Стандартные потоки ввода-вывода.

    Используемое методическое и программное обеспечение: учебное и учебно-методическое пособия, среда разработки Dev-C v.5.11.
    1. Задание


    1. В среде программирования на С++ создайте консольный проект с именем LAB1 в каталоге LAB1.

    2. В проекте создайте файлы main.h (заголовочный файл) и main.cpp (файл исходного кода).

    3. В файле main.h определите с помощью ключевого слова class объект Buttom.

    Данные объекта:

    КНОПКА (Buttom)

    диаметр — int

    тип — char

    длина жала — floa

    Пусть данные имеют закрытый уровень доступа (private).

    4. Опишите конструктор объекта, аргументы которого будут инициализировать все данные объекта.

    5. Опишите конструктор объекта по умолчанию (без аргументов), проинициализировав все данные.

    6. Опишите в объекте функцию void Print() с открытым уровнем доступа (public), которая будет выводить данные на экран.

    7. Откройте файл main.cpp. С помощью директивы #include включите в файл main.cpp заголовочные файлы #include , #include , #include , а также ваш заголовочный файл "Main.h".

    8. Ниже определите конструктор объекта, инициализирующий все данные объекта значениями аргументов. В теле конструктора используйте функцию strcpy(стр1, стр2) – заменена на new string() для копирования строки тип.

    9. Затем определите функцию void Buttom::Print(). В теле функции для вывода данных используйте стандартный поток вывода cout << значение1 << значение2 << … << endl;.
    1. Теоретический материал


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

    Переменная, объявленная в программе, имеющая определенный классом тип данных, называется объектом этого класса.

    Таким образом, класс — это структура, состоящая из некоторых переменных (и констант) и функций, а объект — это область памяти, которую занимает структура при ее объявлении.

    Для создания объектов предусмотрены принадлежащие классу функции, заполняющие поля объектов. Эти функции называются конструкторами.

    При удалении объектов вызываются функции, принадлежащие классу и предназначенные для освобождения памяти, — деструкторы.

    Простейшим образом класс можно определить с помощью конструкции:



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

    Тело составной функции может быть определено вне класса. В таком случае для этой функции указывается имя класса, членом которой она является:

    тип_возвращаемого_значения имя_класса::функция(аргументы) {. . .}

    Следует помнить, что указатель на объект, к которому принадлежит составная функция, определяется с помощью ключевого слова this.

    Слияние данных и функций, работающих с этими данными, называется инкапсуляцией. Таким образом:

    класс = данные + составные функции.

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

    Наследование реализовано с помощью понятия производного класса. Класс называется производным от другого класса, если он содержит все поля и функции этого другого класса. Если класс не является производным, то он называется первичным

    Атрибут private имеют члены класса, доступные только для составных и дружественных функций этого класса. Эти члены класса называются закрытыми.

    Атрибут protected имеют члены класса, доступные для составных и дружественных функций классов, которые являются производными от этого класса или совпадают с ним. Эти члены класса называются защищенными.

    Атрибут public имеют члены класса, обращение к которым осуществляется как к полям структуры. Эти члены называются открытыми.

    Если первичный класс объявлен с ключевым словом class, то первые его члены будут закрытыми по умолчанию, если как struct, то открытыми.

    Конструктор имеет дополнительное средство для инициализации полей. Это средство называется списком инициализации.

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

    Например:

    class Arr // массив чисел с плавающей точкой

    {

    int n; // максимальное число элементов

    double *p; // указатель на массив

    public: Arr(int size, double *a): n(size), p(a) {}

    };

    В данном примере список инициализации означает то же самое, что и присваивания n = size и p = a.

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

    Деструктором называется составная функция класса, которая вызывается перед разрушением объекта.

    Это означает, что деструктор вызывается в следующих случаях: ˆ

    при выходе из области видимости; ˆ

    при выполнении операции delete для объектов, размещенных в динамической памяти; ˆ

    непосредственно, как составная функция.
    1. Результат выполнения лабораторной работы.


    В среде программирования на С++ создаем консольный проект с именем LAB1 в каталоге LAB1.

    В проекте создаем файлы main.h (заголовочный файл) и main.cpp (файл исходного кода).

    В файле main.h определяем с помощью ключевого слова class объект Buttom.

    Определяем с помощью ключевого слова class объект Buttom

    class Buttom

    {

    private: // закрытый уровень доступа

    int diam; // диаметр кнопки (целый тип)

    std::string type; // тип кнопки (символьный массив)

    float tip_len; // длинна жала (вещественный тип)

    public: // открытый уровень доступа

    // конструктор объекта, аргументы которого будут

    //инициализировать все данные объекта.

    Buttom (int valueDiam, std::string valueType, float valueTip_len);

    Buttom () // конструктор объекта по умолчанию (без аргументов)

    {

    diam = 0;

    type : 0;

    tip_len = 0;

    }

    void Print(); // функция вывода данных на экран

    void Input(); // функция ввода данных с клавиатуры

    };

    С помощью директивы #include включим в файл main.cpp заголовочные файлы , , , а также заголовочный файл "main.h".

    #include

    #include

    #include

    #include "Main.h"

    Ниже определим конструктор объекта, инициализирующий все данные объекта значениями аргументов. В теле конструктора используем функцию new string() для копирования строки valueType в type.

    #include

    #include

    #include

    #include "main.h"

    using namespace std;

    Buttom::Buttom(int valueDiam, string valueType, float valueTip_len) //конструктор с параметрами

    : diam(valueDiam), type(valueType), tip_len(valueTip_len) // список инициализации конструктора

    {

    diam = valueDiam; // параметру diam присваиваем значение valueDiam

    type : new string (valueType); // копируем строку valueType в type

    tip_len = valueTip_len; // параметру tip_len присваиваем значение valueTip_len

    };

    void Buttom:: Print() // функция для вывода данных

    {

    cout << "\nДиаметр:\t" << diam << "\nТип:\t" << type << "\nДлина жала:\t" << tip_len <<"\n"<< endl;

    }

    void Buttom:: Input () // функция ввода данных с клавиатуры

    {

    cout << "\nВведите диаметр кнопки и нажмите Enter:\t"; //вывод сообщение пользователю о вводимых данных

    cin >> diam; // ввод данных с клавиатуры

    cout << "\nВведите тип кнопки и нажмите Enter:\t";

    cin >> type;

    cout << "\nВведите длинну жала кнопки и нажмите Enter:\t";

    cin >> tip_len;

    }

    int main()

    {

    system ("chcp 1251"); // ввод/вывод на русском языке

    Buttom first_entry(8, "Классическая", 0.3);

    first_entry.Print(); // вывод данных на экран

    Buttom *Buttom1;

    Buttom1 = new Buttom(5, "Цветная" , 1.2); // создание объекта, вызов конструктора с параметрами

    Buttom1->Print(); // вывод данных на экран

    delete Buttom1; // освобождаем память

    Buttom Buttom2;//создание объекта, используем конструктор без параметров

    Buttom2.Input(); // ввод данных с клавиатуры

    Buttom2.Print(); // вывод данных на экран

    system("pause"); // пауза перед выходом из программы

    }



    Рисунок 3.1 Пример результата выполнения программы

    1. СПИСОК ИСПОЛЬЗОВАННЫХ ЛИТЕРАТУРНЫХ ИСТОЧНИКОВ


    1. Объектно-ориентированное программирование: Учебное пособие. / М.Ю. Катаев 2013 – Томск: Эль Контент, 212 с.

    2. Объектно-ориентированное программирование: Лабораторный практикум., / М.Ю. Катаев 2014 – Томск: Томский межвузовский центр дистанционного образования. 53 с.

    3. https://code-live.ru/post/cpp-classes/#_1


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