Создать класс квартира, имеющая оперделённое число комнат

Ответить
prikolist
Сообщения: 36
Зарегистрирован: 19 ноя 2008, 13:09

02 апр 2009, 19:19

Здравствуйте программисты! Подскажите пожалуйста, я новичок в С++ Builder, дали задание создать класс. Условиек внизу. Подскажите пожалуйста, как это можно реализовать на С++ Builder, дайте пожалуйста примерчик. Заранне благодарен за ответ.

Вот условие задачи:

Код: Выделить всё

-----------------------------------------------------------------
Создать класс квартира, имеющий площадь, определенное число комнат, этаж. Определить конструктор, деструктор и методы доступа( чтения и записи) полей класса. 
Создать два производных класса:
1)	Класс - однокомнатная квартира, содержащий комнату и кухню (ее площадь).
2)	Класс – трехкомнатная квартира, содержащий 3 комнаты (их площади), кухню (ее площадь).
Определить конструкторы, деструкторы, методы доступа(чтения и записи) площади, этажности, количества комнат однокомнатной и трехкомнатной квартиры. 
Создать экземпляры объектов всех классов.
В методах доступа к данным класса предусмотреть вывод сообщений поясняющих, метод какого класса вызывается
------------------------------------------------------------------------ :)
1. Нужно создать родительский класс квартира,
в котором описать , например, два поля площадь, число комнат (к ним доступ
только
через специальные методы ( в методах должны выводится какие - либо
сообщения, чтобы было понятно, что обращаемся к объекту базового класса)
или свойства). В конструкторе родительского класса проинициализировать эти
значения 0 (или другим значением).

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


-----------------------------------------------------------------
Аватара пользователя
Romeo
Сообщения: 3091
Зарегистрирован: 02 мар 2004, 17:25
Откуда: Крым, Севастополь
Контактная информация:

02 апр 2009, 19:38

Перемещено из "С и С++".
Entites should not be multiplied beyond necessity @ William Occam
---
Для выделения С++ кода используйте конструкцию [ code=cpp ] Код [ /code ] (без пробелов)
---
Сообщение "Спасибо" малоинформативно. Благодарность правильнее высказать, воспользовавшись кнопкой "Reputation" в виде звёздочки, расположенной в левом нижнем углу рамки сообщения.
Аватара пользователя
Airhand
Сообщения: 234
Зарегистрирован: 06 окт 2005, 16:21
Откуда: Dnepropetrovsk

03 апр 2009, 17:47

Как-то так:

Код: Выделить всё

class flat
{
private:
    unsigned int ploshad1;
    unsigned int ploshad2;
    unsigned char numberOfRoom;
public:
    flat(unsigned int pl1, unsigned int pl2);
    virtual ~flat();
 
    void AddRoom();
    void DeleteRoom();
}
Это всё в хидере.
В cpp написать:

Код: Выделить всё

#include <vcl>
#include имя хидера в кавычках
 
flat::flat(unsigned int pl1, unsigned int pl2) : ploshad1(pl1), ploshad2(pl2), numberOfRoom(0) {}
flat::~flat()
{
}
void flat::AddRoom()
{
    ++numberOfRoom;
    cout << "add room";
}
void flat: :D eleteRoom()
{
    --numberOfRoom;
    cout << "delete room";
}
Я не делал проверки на максимальное и минимальное значение. Так же нет оператора присваивания.
Не забудь добавить класс и все от него производные в проект.
Производный класс. Опять же хидер:

Код: Выделить всё

#include имя хидера с родительским классом в кавычках
class triflat : public flat
{
private:
    unsigned short floor;
public:
    triflat(unsigned int pl1, unsigned int pl2);
    ~triflat();
 
    void MakeFloor(const unsigned short floorNuber);
}
В исходнике:

Код: Выделить всё

#include <vcl>
#include имя хидера в кавычках
 
triflat::triflat(unsigned int pl1, unsigned int pl2) : flat(pl1, pl2), floor(0)
{}
triflat::~triflat()
{
}
triflat::MakeFloor(const unsigned short floorNuber)
{
    floor = floorNumber;
    cout << "make floor";
}
Писал кад на сайте, так что может не компилиться. Пункт 3 не делал.
Оптимизация по скорости:
#define while if
Оптимизация по размеру:
#define struct union
Ответить