Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 20.12.2011, 12:04   #1
anlu
Пользователь
 
Регистрация: 16.12.2011
Сообщений: 34
По умолчанию Изменить наследуемый метод

Так вот есть класс А:
Код:
#pragma once
class a
{
	char name[20];
public:
	a(void);
	~a(void);
	void ок();
};



#include "a.h"
#include <iostream>
using namespace std;


a::a(void)
{
}


a::~аvoid)
{
}

void a::ok()
{
	setlocale(0,"");
	cout <<"класс А" << endl;
}


И есть класс B, который наследует поля public у класса А:
Код:
#pragma once
#include "a.h"
class b :
	public a
{
public:
	b(void);
	~b(void);
};



#include "b.h"
#include <iostream>
using namespace std;

b::b(void)
{
}


b::~b(void)
{
}
Ну вот теперь мне нужно добавить в метод "OK" класса В: cout <<"класс B" << endl;
тобиш что бы он выводил "класс А" и "класс В"

Как и где нужно изменить метод ОК????
anlu вне форума Ответить с цитированием
Старый 20.12.2011, 13:08   #2
_Bers
Старожил
 
Регистрация: 16.12.2011
Сообщений: 2,329
По умолчанию

Цитата:
Сообщение от anlu Посмотреть сообщение
Ну вот теперь мне нужно добавить в метод "OK" класса В: cout <<"класс B" << endl;
тобиш что бы он выводил "класс А" и "класс В"

Как и где нужно изменить метод ОК????
НЕ изменить, а добавить. Разницу понимаешь?

Изменить - это значит править уже написанный, отлаженный, и протестированный код. А потом заново все отлаживать, и тестировать.

Это называется, получить себе на голову дополнительный геммой.

ООП для того и придумали, что б тебе поменьше приходилось править уже написанного кода. И что б ты мог легкими движениями получать более совершенные, или заточенные под конкретную задачу инструменты.

Сейчас у тебя есть класс А, который умеет выводить данные:

Код:
А a; a.OK(); // вывод: класса А
Тебе нужно усовершенствовать инструмент, что бы помимо этой информации, он мог вывести ещё что либо. Причем, тебе не нужно переписывать уже существующий код. Ты наследуешься от класса А, и добавляешь метод в класс потомка. Новая плюшка добавляется легким движением руки:

Код:
B b; b.OK(); //вывод: класс Б, и класс А
Какие можно сделать далеко-идущие выводы из тех соображений, что я огласил выше?

1. Класс Б не реализовывает тот функционал, что итак уже был реализован за него классом А. Зачем писать одно и тоже дважды?

2. Класс Б лишь добавляет что то своё, а там, где требуется функционал предка - использует возможности предка.

Взгляни на то, как можно было бы реализовать метод потока:

Код:
void B::ok()
{
	setlocale(0,"");
      	cout <<"класс B, и класс А" << endl; //можно, но не правильно!
        //Класс А итак уже умеет выводить себя на дисплей
        //Не нужно дублировать функционал 
}
Код:
void B::ok()
{
	setlocale(0,"");
      	cout <<"класс B, и "; //вывели информацию о потомке
        A::ok();  //вывели информацию о предке, средствами самого предка
        //такой вариант идеологически более корректный, но он не гибкий
       //впрочем, тебе по задаче пойдёт
}
_Bers вне форума Ответить с цитированием
Старый 20.12.2011, 13:26   #3
anlu
Пользователь
 
Регистрация: 16.12.2011
Сообщений: 34
По умолчанию

Все получилось, во всём разобрался!!! Спасибо большое!!!!
anlu вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
исследовать метод квадратных корней и метод Холецкого для решения СЛАУ Vит@x@ Помощь студентам 0 22.11.2011 10:47
Задача Коммивояжера. Метод Монте-Карло и метод приращений. [Паскаль] U9110 Помощь студентам 4 06.04.2011 09:48
Turbo Pascal[програмыки : текстовая\метод симпсона\метод половинного деления qsccsq Помощь студентам 7 24.12.2010 05:23
Реестр - Необходимо изменить действие по умолчанию для .reg файлов(«Изменить» вместо «Объединить»). ACE Valery Windows 7 30.11.2010 23:33
Не рисует наследуемый класс. TwiX Общие вопросы Delphi 7 03.10.2009 11:59