Для студентов МПУ по предмету ПрограммированиеПервая лабаПервая лаба 2013-09-14СтудИзба

Лабораторная работа: Первая лаба

Описание

Описание файла отсутствует

Характеристики лабораторной работы

Учебное заведение
Семестр
Просмотров
217
Скачиваний
18
Размер
3,15 Kb

Список файлов

Теор_часть

Тема: создание нового класса.

Теоретическая часть

Под классом в С++ понимают тип, определенный программистом; этот термин применим ко всему, что создано с использованием ключевого слова class, а также структурам и объединениям.

Определение класса выглядит следующим образом:

class:<имя класса>

{

private:<объявление>

public:<объявление>

protected:<объявление>

};

В конце объявления класса, как и в конце объявления переменных, обязательно наличие точки с запятой.

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

private (закрытый) - члены класса, объявленные после этого ключевого слова, определены только внутри класса и вне его использоваться не могут.

public (открытый) - члены класса, объявленные после этого ключевого слова, определены как внутри класса, так и вне его(при указании имени класса).

protected (защищенный) - члены класса, объявленные после этого ключевого слова, определены для членов класса, его потомков и друзей.

Ключевые слова private, public и protected иногда называют атрибутами доступа к членам класса. При отсутствии явного указания в области видимости для каких-либо членов класса, они определяются как закрытые и не доступны вне определения класса.

Примером класса может быть графическая точка на экране монитора. ее данными-членами являются координаты x,y, а также цвет. В качестве функций членов можно задать инициализацию точки, определение ее цвета, установку нового цвета.

class GraphPaint

{

private:

int x,y, color;

public:

void init (int Wx, int Wy, int Wcolor);

void setnewcolor (int Wcolor);

}

;

class MyStr

Определим еще один класс, являющийся расширением старого типа С++.

class MyStr

{

char String [256];

public:

char*getpnt (void);

int length (void);

void copy (char * s);

void plus (char * s);

}

;

В качестве данных-членов в этом классе имеется единственная переменная string, по умолчанию определенная как private, а в качестве функций-членов 4 функции, определенные как public.

Поведение класса

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

<имя класса>::<имя функции>(<список параметров>){<тело функции>}.

В определении функции отсутствуют точка с запятой после заголовка и после фигурной скобки, закрывающей тело функции.

Имя класса является неотъемлемой частью определения функции-члена этого класса. Т.к. несколько классов могут иметь функции-члены с одним и тем же именем. Кроме того, именно функция класса определяет поведение класса, т.е. его действия.

Определим фкункцию класса Mystr, определенного в предыдущей программе:

#include <string.h>

#include <mystr.h>

char * MyStr::getptr (void)

// Функция определяет адрес строки данных

{

return String;

}

int MyStr::length (void)

// Функция определяет длину строки данных

{

return strlen (String);

}

void MyStr::copy (char * s)

/* Функция копирует строку-параметр в область данных своего класса */

{

strcpy (String, s);

}

void MyStr::plus (char * s)

/* Функция дописывает строку-параметр к строке, нахожящейся в области

данных её класса */

{

strcat (String, s);

}

;

Таким образом, объявив класс Mystr в примере 2 и определив все функции, входящие в него в примере 3, мы ввели новый класс Mystr. Если первый класс нужен только в конкретной программе и не расчитан на широкое применение, его объявление и определение его функций могут быть записаны в одном файле Mystr.cpp. Этот файл должен содержать тексты примеров 2 и 3. Но в нем находится пока только объявление нового класса и определение его функций.

Для использования этого класса нужно еще дописать текст этого файла.

Если предполагается использование нового класса в других программах, лучше оформить его так, как это обычно принято в С++. Для этого определение класса Mystr (весь текст примера 2) сохраняется в виде файла заголовков, например mystr.h, а описание функций-членов класса (весь пример 3), в другом файле. Например, mystr.cpp.

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

А файл Mastr.cpp копируется в виде объектного файла, включается в проект программы и далее используется как все остальные основные классы С++.

Объекты класса

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

<объект>.<имя функции-члена>(<параметры>);

Пример:

#include <stdio.h>

#include <mystr.h>

void main ()

{

MyStr str, str2;

str1.copy ("Привет,");

str2.copy ("объект!");

str1.plus (str2.getptr());

puts (str1.getptr());

};

В данном примере 2 инструкции после инструкции "объявление" копируют строки "параметры" в поля данных объектов str1 и str2. Третье - дописывают к строке объекта str1 cтроку объекта str2. Четвертое - получают указатель на строку объекта str1 и выводит ее на экран. Каждый объект имеет свое собственное поле данных. Т.о., в результате работы программы, на экране монитора появится строка "Привет, объект!". за вывож на экран отвечает директива stdio.h.

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

В примере 4 компилятор определяе типы str1 и str2 и вызывает функции mystr::copy, mystr::plus, mystr::getpnt.

Таким образом, первые 2 выполняемые инструкции обращаются к одной и той же функции класса. Работа с функциями и данными объектов С++ реализуется по-разному: все объекты одного класса имеют общий доступ к одним и тем же функциям. Но каждый из них имеет свое поле данных, не зависимо от того, написано оно как public или private.

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

Задание: создать свой класс, заголовочный файл и функцию.

Картинка-подпись
Хочешь зарабатывать на СтудИзбе больше 10к рублей в месяц? Научу бесплатно!
Начать зарабатывать

Комментарии

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