Модераторы: bsa
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> классы. наследование. жидкости 
:(
    Опции темы
zhenya1
Дата 22.10.2010, 21:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 100
Регистрация: 20.9.2010

Репутация: нет
Всего: нет



Нужно создать класс жидкость(liquid), имеющий поля название и плотность. В нем - методы переназначения и изменения плотности. Так же нужно создать производный класс Alcohol(спирт), имеющий крепость. В нем - определить методы переназначения и изменения крепости.

Как тут логически разобратся. Что нужно переназначать в обоих классах? Что вообще имеется ввиду под методом "переназначать". ЧТо должно связывать эти 2 класса? А может быть метод "переназначение" должен быть общий у 2ух классов? 
Код

class Liquid
{
private:
    char *name;
    int density;//плотность
public:
    void CLperenaznachenie();
    void DensityChange();
};
class Alcohol:public Liquid
{
private:
int fortress; //крепость
public:
    void CAperenaznachenie();
    void FortressChange();
};

PM MAIL   Вверх
triclosan
Дата 22.10.2010, 22:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 515
Регистрация: 18.8.2006

Репутация: 2
Всего: 12



Код

class Liquid
{
private:
    char *name; // если используешь указательный тип необходимо определить правильное копирование переменной этого типа в конструкторе копировальном. НО это у нас все же С++ - лучше использовать его стандартную библиотеку std::string
    float density;//плотность (у какой жидкости, кроме воды, плотность целое число? У спирта точно нет)
public:
    //void CLperenaznachenie(); ИМХО здесь лишнее, ведь мы же переопределяем плотность в производном классе
    void setDensity(double v ) { density = v; }
};

class Alcohol:public Liquid // тут уже класс представляющий вещественное понятие, конкретную жидкость
{
private:
float fortress; //аналогично, у пива крепость целое число?
public:
    //void CAperenaznachenie(); Не пойму зачем здесь
    void setFortress(float v ){density = v;}
};

PM MAIL   Вверх
zhenya1
Дата 22.10.2010, 22:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 100
Регистрация: 20.9.2010

Репутация: нет
Всего: нет



На счет того, что крепость- не целое число, я с Вами согласен, спасибо.

Цитата

//void CLperenaznachenie(); ИМХО здесь лишнее, ведь мы же переопределяем плотность в производном классе

НО как же так. Чето я не понял. НО мне по условию задачи нужны эти методы.
PM MAIL   Вверх
triclosan
Дата 22.10.2010, 22:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 515
Регистрация: 18.8.2006

Репутация: 2
Всего: 12



Как я уже написал "ИМХО" - это противоречит принципам ООП.

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

Добавлено @ 22:44
Цитата(zhenya1 @  22.10.2010,  21:57 Найти цитируемый пост)
А может быть метод "переназначение" должен быть общий у 2ух классов? 

Именно, это же один из принципов наследования

Это сообщение отредактировал(а) triclosan - 22.10.2010, 22:46
PM MAIL   Вверх
zhenya1
Дата 22.10.2010, 22:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 100
Регистрация: 20.9.2010

Репутация: нет
Всего: нет



А что вообще должен делать метод " переназначение" .?? Какую смысловую нагрузку он должен нести?
 И ,тоесть, как  я Вас понял, мы должны переопределить метод "переназначение" чтобы он был общим для 2ух классов?

Это сообщение отредактировал(а) zhenya1 - 22.10.2010, 22:53
PM MAIL   Вверх
triclosan
Дата 22.10.2010, 23:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 515
Регистрация: 18.8.2006

Репутация: 2
Всего: 12



Цитата(zhenya1 @  22.10.2010,  22:52 Найти цитируемый пост)
Какую смчсловую нагрузку он должен нести?

Вам виднее. ;)

Цитата(zhenya1 @  22.10.2010,  21:57 Найти цитируемый пост)
методы переназначения и изменения плотности

Чем по вашему отличается "переназначения" и "изменения" с данном контексте. Я подозреваю, что злобный препод вводит вас в заблуждение.


Цитата(zhenya1 @  22.10.2010,  22:52 Найти цитируемый пост)
И ,тоесть, как  я Вас понял, мы должны переопределить метод "переназначение" чтобы он был общим для 2ух классов? 

setDensity и так общий. (строго говоря у каждого свой, но они в данном контексте одинаковы)

Переопределить метод setDensity  конечно можно,  но я не вижу смысла в этом в данном случае: "жидкость" - "спирт" 
PM MAIL   Вверх
zhenya1
Дата 22.10.2010, 23:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 100
Регистрация: 20.9.2010

Репутация: нет
Всего: нет



Я предпологаю, что метод "переназначение" не должен быть связан с плотностью жидкостей. Возможно, может он должен изменять имя жидкости или менять ее назначение( т.е. типа в 1ом классе вода - пить, а во втором, наример, вода - поливать что-нить) ??
PM MAIL   Вверх
triclosan
Дата 22.10.2010, 23:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 515
Регистрация: 18.8.2006

Репутация: 2
Всего: 12



Нельзя браться за решение задачи, не сформулировав ее хотя бы в общих чертах. 

Сейчас вы непонятно даже для себя формулируете ее и просите помощи в решении. 

менять имя 
Код

setName(string v){ name=v.c_str(); }


менять назначение  setPurpose... и т.п.
PM MAIL   Вверх
zhenya1
Дата 22.10.2010, 23:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 100
Регистрация: 20.9.2010

Репутация: нет
Всего: нет



Цитата

Сейчас вы непонятно даже для себя формулируете ее и просите помощи в решении.

Я Вот с помощью помощи и хотел бы разобраться как правильно эту задачу реализовать, т.к. я не могу понять условие и последовательность ее логики.
До решения еще дело не дошло smile
PM MAIL   Вверх
triclosan
Дата 22.10.2010, 23:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 515
Регистрация: 18.8.2006

Репутация: 2
Всего: 12



я же привел примеры: переменная-член и сеттер ее. Сеттер "переопределяет" значение если хотите. Имхо все остальное от Лукавого.
PM MAIL   Вверх
zhenya1
Дата 23.10.2010, 00:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 100
Регистрация: 20.9.2010

Репутация: нет
Всего: нет



Т.е. нужно сделать как-то так:
Код

class Liquid
{
private:
    char *name; 
    float density;
public:
    void setDensity(float v1 ) { density = v1; }
    void show1(){cout<<density<<" "<<endl;}
};

class Alcohol:public Liquid 
{
private:
float fortress; 
public:
    void setFortress(float v2 ){fortress = v2;}
    void show2(){cout<<fortress<<endl;}
};
void main()
{
    Alcohol obj;
    obj.setDensity(12);
    obj.setFortress(22);
    obj.show1();
    obj.show2();
    system("pause");
}

PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "C/C++: Для новичков"
JackYF
bsa

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

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


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, bsa.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Для новичков | Следующая тема »


 




[ Время генерации скрипта: 0.0540 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.