Форум программистов, компьютерный форум CyberForum.ru

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Tester123
0 / 0 / 0
Регистрация: 16.05.2012
Сообщений: 21
#1

Классы и основы наследования, с++ - C++

23.05.2012, 19:34. Просмотров 901. Ответов 4
Метки нет (Все метки)

Последняя лабораторная работа семестра. Немаленькая...про классы мало что знаю. Сложно ли это сделать? Не могли бы помочь ?

1. Разработайте класс GeometricalBody (геометрическое тело), который должен содержать защищенную (protected) переменную name типа std::string, хранящую наименование объекта этого класса, и член-функцию print() для вывода на экран этого наименования. Наименование объекту присваивается в момент создания при вызове конструктора, если же объект создается конструктором без параметров, то имя присваивается вызовом члена-функции SetObjectName.
Напишите программу, которая создает и инициализирует два объекта этого класса. Один объект создается с использованием конструктора с параметром, а другой – конструктором без параметров.

2. Разработайте производный от класса GeometricalBody класс геометрического
тела, указанного в вашем варианте (например, в варианте указан Cube (куб)).
Класс должен содержать указанные там закрытые (private) переменные (например, для куба это а — ребро куба) и переменную name типа std::string, хранящую наименование объекта этого класса. Для присвоения имени объекту класс должен содержать функцию SetObjectName .
Разработанный класс должен содержать метод Init() для инициализации членов-данных класса, а также методы, вычисляющие и возвращающие значения площадей основания getSo (), боковой getSb () и полной getSp () поверхностей по формулам, которые также приведены в вашем варианте, а также функцию print() для вывода имени объекта и значений вычисленных площадей на экран.

3. Напишите программу, которая создает и инициализирует два объекта разработанного класса, вычисляет и выводит значения площадей основания, боковой и полной поверхностей. Для создания и выполнения второго объекта используйте указатель.

4. Внесите в базовый и производный классы такие изменения, которые позволят
вам продемонстрировать раннее и позднее связывания (называемые еще статическим и динамическим связыванием).

Вариант:
Имя класса: Trapezium_Prism (прямая призма, в основании — равнобедренная тра-пеция)
Переменные: a, b — параллельные стороны, h — высота трапеции-основания, Н — высота призмы.
Площади поверхностей:
основания S(осн) = (a+b)h/2
боковой S(бок) = (A=B+2*sqr(1/4(a-b)^2+h^2))*H
полная S(полн) = 2S(осн) + S(бок)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
23.05.2012, 19:34     Классы и основы наследования, с++
Посмотрите здесь:
Классы наследования C++
Классы наследования, немножко не доделал C++
C++ Спроектировать классы, находящиеся в отношении наследования
Классы основы C++
Разработать программу с использованием наследования классов, реализующую классы C++
C++ Связать следующие классы в иерархию наследования: ArcherCharacter, Wizard, SwordsMan, LongRange
Разработать программу с использованием наследования классов, реализующую классы: точка; линия; круг C++
чем отличаются структуры для наследования интерфейса, от структур, для наследования реализаций C++
Непонятна тема (Классы содержащие другие классы, как данные члены ) C++
Программа по классам, которая использует классы точек и прямых на плоскости, а, возможно, и другие классы C++
Наследование, базовые классы и производные классы C++
C++ наследования

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Tester123
0 / 0 / 0
Регистрация: 16.05.2012
Сообщений: 21
24.05.2012, 21:17  [ТС]     Классы и основы наследования, с++ #2
Может у кого-то есть похожие задания, наработки? Помогите пожалуйста.
Юля_программист
462 / 117 / 17
Регистрация: 04.05.2012
Сообщений: 580
Записей в блоге: 1
25.05.2012, 15:00     Классы и основы наследования, с++ #3
Вообще если мало, что знаешь, то всегда надо начинать с теории.
класс- это сложный тип данных объединяющий в себе переменных разного типа.

Не все могу, но кое-что подскажу

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
class GeometricalBody
{protected:
//тут твоя переменная, я пространствами имен не работала, не могу сказать как правильно делать
public:
float a,b,h,H;
void SetObjectName()
{//тут тело функции,придется подумать самому, я честно не поняла, что за имя надо присвоить
}
GeometricalBody();//конструктор без параметров
GeometricalBody(char name);//конструктор с параметром
{//тут тело конструктора, предполагаю, что оно совпадает с телом функции SetObjectName()
}
 
};
создание объекта происходит так:
C++
1
2
a.GeometricalBody();//в случае конструктора без параметров
а.GeometricalBody("Куб")//в случае с параметром
производные классы объявляются так
C++
1
2
3
4
class new:public GeometricalBody
{
//ну а тут пишешь что-то новое
};
Надеюсь чем-то помогла)
ForEveR
В астрале
Эксперт С++
7969 / 4731 / 320
Регистрация: 24.06.2010
Сообщений: 10,539
Завершенные тесты: 3
25.05.2012, 16:50     Классы и основы наследования, с++ #4
Юля_программист,
C++
1
2
a.GeometricalBody();//в случае конструктора без параметров
а.GeometricalBody("Куб")//в случае с параметром
Что за звери?

Как бэ создание проходит несколько по-другому, а не попыткой явного вызова конструктора у уже судя по всему сконструированного объекта)
C++
1
2
GeometricalBody a;
GeometricalBody a("Куб");
Ну даже для примера юзать ключевое слово С++, в качестве названия класса - перебор.
C++
1
class new:public GeometricalBody
Tester123
0 / 0 / 0
Регистрация: 16.05.2012
Сообщений: 21
25.05.2012, 18:36  [ТС]     Классы и основы наследования, с++ #5
Понимаю что надо с теории, но как всегда затянул и время пролетело, а теперь надо как-то сдать лабу...
Yandex
Объявления
25.05.2012, 18:36     Классы и основы наследования, с++
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru