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

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

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 28.11.2009, 17:58   #1
ahab
Пользователь
 
Регистрация: 22.07.2009
Сообщений: 17
По умолчанию Метод класса или внешняя функция? с++

Добрый день, имеется класс

Код:
/*rectangle.h
Разработать класс прямоугольник, 
задать разумное поведение и протестировать 
на объектах класса, указателях на объект класса,
 массиве объектов. */

class Rectangle
{
	private:
		int x,y;				//левый верхний угол прямоугольника
		float width,hight;		//ширина и высота

	public:
		Rectangle();
		Rectangle(int a, int b, float c, float d);

		void setX(int a);		//ввод x
		void setY(int b);		//ввод y
		void setW(float c);		//ввод ширины
		void setH(float d);		//ввод высоты

		int getX()const;		//вывод x
		int getY()const;		//вывод y
		float getW()const;		//вывод width
		float getH()const;		//вывод hight
		
		void moveX(int a);		//передвижение x
		void moveY(int b);		//передвижение y

		void changeW(int c);		//изменение width
		void changeH(int d);		//изменение hight

		float perimetr()const;		//периметр
		float area()const;		//площадь
		float diagonal()const;		//диагональ

};
Вопрос вот в чем: как лучше организовать функцию display() как метод класса или как внешнюю функцию?
Дилема вот в чем, с одной стороны display() будет выводить данные о прямоугольнике, и логично написать такой метод, но с другой стороны это не совсем правильно с точки зрения гибкости. сегодня я хочу выводить в одном виде, а завтра в другом, переписывать класс, как я понимаю, не совсем правильно. Класс пишется один раз а потом только используется.
проект здесь не выкладываю, если кому интересно будет напишите.
если что непонятно напсал, уточняйте,
заранее благодарен,
с уважением Alex Pavlenko
ahab вне форума Ответить с цитированием
Старый 28.11.2009, 18:05   #2
netrino
Участник клуба
 
Аватар для netrino
 
Регистрация: 15.07.2008
Сообщений: 1,933
По умолчанию

ИМХО, как метод класса, это было бы логично. Зачем внешняя ф-ция, если она всё равно умеет работать только с этим объектом класса? Отрисовка прямоугольника слишком завязана на его сущность, чтобы быть отдельной внешней функцией

Последний раз редактировалось netrino; 28.11.2009 в 18:08.
netrino вне форума Ответить с цитированием
Старый 28.11.2009, 18:51   #3
ahab
Пользователь
 
Регистрация: 22.07.2009
Сообщений: 17
По умолчанию

Цитата:
Сообщение от netrino Посмотреть сообщение
если она всё равно умеет работать только с этим объектом класса?
не совсем понял, что вы имеете в виду?
а так в принципе логчино,
хотя если есть еще какие варрианты буду рад
ahab вне форума Ответить с цитированием
Старый 28.11.2009, 19:30   #4
netrino
Участник клуба
 
Аватар для netrino
 
Регистрация: 15.07.2008
Сообщений: 1,933
По умолчанию

Ну а на какую реализацию display, как внешней ф-ции Вы рассчитываете? Раз она выводит данные о прямоугольнике, то вряд ли она сможет вывести данные, например, о треугольнике или ещё о чём-либо, потому о гибкости здесь речи не идёт. Как ещё один вариант - перегрузить оператор << для ostream и забыть о display, но тогда это обязывает использовать стандартную библиотеку и будет работать только для консольных приложений
netrino вне форума Ответить с цитированием
Старый 28.11.2009, 19:53   #5
Impuls1989
Форумчанин
 
Аватар для Impuls1989
 
Регистрация: 16.08.2008
Сообщений: 276
По умолчанию

А вы определите функцию как виртуальную, а потом просто наследуйте класс и определяйте вашу display() чтоб она хоть в круге выводила данные.
Искусственный интеллект - фигня по сравнению с естественной глупостью
Impuls1989 вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Функция - член класса Syltan Общие вопросы C/C++ 9 06.10.2009 23:44
Метод класса REztor Помощь студентам 2 14.04.2009 17:10
Метод к полям класса; vovunisaev Общие вопросы C/C++ 2 08.04.2009 14:19
Метод без класса Altera Общие вопросы Delphi 12 24.12.2008 15:22
одна функция потока, а другая функция - член класса запускающего этот поток Дмитрий_Ч Общие вопросы C/C++ 2 27.09.2007 08:50