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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> [С++] Создать класс Point 
:(
    Опции темы
alesa
Дата 3.5.2007, 23:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Создайте класс Point (точка), который содержит элементы целого типа xCoordinate и yCoordinate, и класс наследник Line, имеющий функции getLine(x1, y1, x2, y2) и setLine(x1, y1, x2, y2). Вывод данных представить через  дружественные функции операции извлечения из потока и передачи в поток. Напишите программу тестирования класса. 

 smile  smile пожалуйста, помогите!
PM MAIL   Вверх
Xenon
Дата 4.5.2007, 00:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


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

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



Какой язык-то?

Это сообщение отредактировал(а) Xenon - 4.5.2007, 00:55


--------------------
user posted image  
PM MAIL   Вверх
ivashkanet
Дата 4.5.2007, 08:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Кодю потиху
****


Профиль
Группа: Участник Клуба
Сообщений: 3684
Регистрация: 23.2.2006
Где: Гомель, Беларусь

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



 smile 
Line наследник от Point  smile 
alesa, скажи преподу, чтобы он убил себя ап стену

P.S. Ждем язык
PM MAIL WWW ICQ   Вверх
skyboy
Дата 4.5.2007, 12:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


неОпытный
****


Профиль
Группа: Модератор
Сообщений: 9820
Регистрация: 18.5.2006
Где: Днепропетровск

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



alesa, скажи преподу, чтоб использовал агрегирование, а не наследование.
зы Язык какоооой?!
PM MAIL   Вверх
Xenon
Дата 7.5.2007, 01:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


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

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



Что за бред вообще ... Ну унаследую я от Point две координаты, а вторые две откуда брать? Что за метод getLine(x1, y1, x2, y2), который, по идее, должен возвращать значения точек, а не получать их в виде аргументов. Может кто-то меня просвятит в чем тут дело, но задание совершенно непонятное. Точно правильно задание переписала?


--------------------
user posted image  
PM MAIL   Вверх
KelTron
Дата 7.5.2007, 08:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Цитата(Xenon @  7.5.2007,  01:28 Найти цитируемый пост)
Что за метод getLine(x1, y1, x2, y2), который, по идее, должен возвращать значения точек, а не получать их в виде аргументов

вероятно они должны передаваться по ссылке 


--------------------
Тысячами незримых нитей обвивает тебя Закон. Разрубишь одну - преступник. Десять - смертник. Все - Бог.
Эвенгар Салладорский, основатель Школы Тьмы.
PM MAIL   Вверх
ivashkanet
Дата 7.5.2007, 09:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Кодю потиху
****


Профиль
Группа: Участник Клуба
Сообщений: 3684
Регистрация: 23.2.2006
Где: Гомель, Беларусь

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



 smile 
Цитата(keenara @  7.5.2007,  07:57 Найти цитируемый пост)
Что же такое ООП? Я вам прямо скажу - ООП это чушь. Если требуется что-то сделать то нужно брать и делать, а не разбираться месяц кто что от кого наследует. Но по этой чуши у нас экзамен, так что записывайте: объектно-ориентированное программирование - это...

Представляю чему он вас мог научить  smile 
keenara, найди любую толковую книжку по ООП, не губи себя  smile 
PM MAIL WWW ICQ   Вверх
apook
Дата 7.5.2007, 10:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Че возмущаетесь?....
Если Point понимать как Points -Точки, а Line -создать линию,
никаких проблем не вижу.
Код

#include <iostream.h>


class Point
{
    public:
    Point();
    int  xCoordinate, yCoordinate;
    ~Point();
    } ;

Point::Point()
{
    xCoordinate=0;
    yCoordinate=0;
}

Point::~Point()
{
    ;
}

class Line : public Point
{
    public:
    void setLine( int x, int y )
    {
        xCoordinate=x;
        yCoordinate=y;
        }

    void getLine( int &x, int &y )
    {
        x=xCoordinate;
        y=yCoordinate;
        }
    };


int main()
{
int x, y;

Point bc; //baseclass
Line sc;  //subclass

sc.setLine( 70, 100 );
sc.getLine( x, y );

cout << x << "  " << y << endl;
return 0;
}


keenara
Цитата

а решать задачи как можно проще. 

ООП  облегчает программирование, делает удобней и вообще круче!


Это сообщение отредактировал(а) apook - 7.5.2007, 11:25


--------------------
Мои руки из дуба, голова из свинца ну и пусть ...
PM MAIL   Вверх
Xenon
Дата 7.5.2007, 15:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


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

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



apook, ага, а линия у тебя одной координатой x и y задается? smile Не находишь это странным? В том-то и суть, что если наследовать классически, то мы можем иметь только ОДНУ точку, а вот если включением наследовать, то тут да - можно сделать две переменные-члены типа Point и это будут координаты начала и конца нашей линии. 

KelTron, чего-то не вижу я там ссылок smile

Добавлено через 2 минуты и 47 секунд
keenara, поверхностный взгляд у вас на программирование, ой какой поверхностный ... На первую стадию уходит больше времени, но зато какая расширяемость  - раз, полиморфизм - два, возможность создавать свои типы - три. Это самый минимум того, что дает ООП. 


--------------------
user posted image  
PM MAIL   Вверх
ivashkanet
Дата 7.5.2007, 15:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Кодю потиху
****


Профиль
Группа: Участник Клуба
Сообщений: 3684
Регистрация: 23.2.2006
Где: Гомель, Беларусь

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



 smile 
Цитата(Xenon @  7.5.2007,  14:04 Найти цитируемый пост)
На первую стадию уходит больше времени, но зато какая расширяемость  - раз, полиморфизм - два, возможность создавать свои типы - три. Это самый минимум того, что дает ООП.  

Нет, тут важнее:
1) Модульность
2) Скрытие реализации

Из этого вытекает: 
Модульность
  •  возможность акцентировать внимание на части, а не всей системе, 
  •  преимущество в разработке несколькими программистами (актуально для > 5-10 программистов),
  •  простота расширяемости (если разработчики это предусмотрели, конечно),
  •  ...
Скрытие реализации
  •  не напортишь там, где можно, зная реализацию и имея доступ к ней (даже на уровне методов, а не кода),
  •  опять же голова меньше забита тем, что тебе не надо,
  •  ...

В системах посложнее "калькулятора", без ООП можно, но сложно

P.S. А ссылка на якобы Страуспа --  провокация и бойан.
PM MAIL WWW ICQ   Вверх
ivashkanet
Дата 8.5.2007, 12:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Кодю потиху
****


Профиль
Группа: Участник Клуба
Сообщений: 3684
Регистрация: 23.2.2006
Где: Гомель, Беларусь

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



Цитата(keenara @  7.5.2007,  15:40 Найти цитируемый пост)
Это хорошие вещи, но кто сказал что их дает именно ООП? 

Прошу прощения, действительно не подумал (затупил  smile )  smile 

Я имел ввиду примерно следующее:
Как развивалось программирование в сторону повышения абстракции:
1) Команды процессора (АСМ) -- никакой абстракции (от процессора)
2) Объединение команд процессора в Операторы --- есть абстрагирование от процессора, но нет от языка программирования.
3) Объединение операторов в Методы -- расширение количества "операторов", от языка далеко не ушло, данные как были общими, так и остались.
4) Группировка методов и данных в классы (ООП) -- перемещение предметной области программирования от манипулирования числами к манипулирования объектам (почти) реального мира на интуитивно понятным образом.
Цитата(keenara @  7.5.2007,  15:40 Найти цитируемый пост)
ООП оправдывает себя тогда и только тогда, когда возникает необходимость в относительно сложной системе наследования, иначе только усложняет программу.

Да вообще, почему ты привязалась к этому наследованию, не хочешь -- не используй! (хотя полиморфизм --- очень мощный аппарат).

Добавлено через 5 минут и 28 секунд
Цитата(keenara @  8.5.2007,  02:53 Найти цитируемый пост)
Модераторы, не могли бы вы перенести последние сообщения в новую тему "А так ли нужно ООП"

Разделить нужно, но вот воевать я не намерен. keenara, вот закончишь универ, получишь серьезный проект, ... там посмотрим...

P.S. В моем текущем проекте ООП (а так же шаблоны проектирования) меня прям-таки спасает, так как у заказчиков 7 пятниц на неделе  smile 

Это сообщение отредактировал(а) ivashkanet - 8.5.2007, 12:55
PM MAIL WWW ICQ   Вверх
alesa
Дата 9.5.2007, 14:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Ребята, вы тут флудите, а мне помошь нужна... smile Кто-нить напишите, че-нить дельное, пожалуйтста.
PM MAIL   Вверх
ivashkanet
Дата 10.5.2007, 08:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Кодю потиху
****


Профиль
Группа: Участник Клуба
Сообщений: 3684
Регистрация: 23.2.2006
Где: Гомель, Беларусь

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



alesa, тебе же сказали, что у тебя не задание, а бред smile 
Сходи к преподу и попроси, чтобы он объяснил "как можно наследовать прямую от точки".

Неформальное правило наследования: между наследником и родителем должно (просто обязано) присутствовать отношение является.
Например: Круг, Прямоугольник, Квадрат, Ромб являются Фигурами, поэтому они все могут (но не обязаны) быть наследниками класса Фигура.

Прямая же НЕ является точкой, так что о наследовании и речи быть не может.

Тут больше подходит агрегация (или композиция, не помню кто из них кто smile ): прямая содержит две точки (два ее конца)
PM MAIL WWW ICQ   Вверх
alesa
Дата 10.5.2007, 23:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Нет, я думаю, нужно просто наследовать 2 точки с 2 координатами, которые и задают прямую... Line-это просто тупо название, линия там не при чем.. smile  так можно сделать???
PM MAIL   Вверх
Anikmar
Дата 10.5.2007, 23:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2513
Регистрация: 26.11.2006
Где: Санкт-Петербург

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



Гы:
Код

class Point
{
int x,y;
};

class Line : public Point
{
int x1,y1;
};


оно конечно можно, но вспоминается анекдот:
Я печатаю со скоростью 300 знаков в минуту. Правда такая фигня получается...

Лично мне задание не понятно. Ну наследовать то кое-как можно (непонятно зачем, ну ладно), а собственно методы что должны делать?
PM MAIL ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Центр помощи"

ВНИМАНИЕ! Прежде чем создавать темы, или писать сообщения в данный раздел, ознакомьтесь, пожалуйста, с Правилами форума и конкретно этого раздела.
Несоблюдение правил может повлечь за собой самые строгие меры от закрытия/удаления темы до бана пользователя!


  • Название темы должно отражать её суть! (Не следует добавлять туда слова "помогите", "срочно" и т.п.)
  • При создании темы, первым делом в квадратных скобках укажите область, из которой исходит вопрос (язык, дисциплина, диплом). Пример: [C++].
  • В названии темы не нужно указывать происхождение задачи (например "школьная задача", "задача из учебника" и т.п.), не нужно указывать ее сложность ("простая задача", "легкий вопрос" и т.п.). Все это можно писать в тексте самой задачи.
  • Если Вы ошиблись при вводе названия темы, отправьте письмо любому из модераторов раздела (через личные сообщения или report).
  • Для подсветки кода пользуйтесь тегами [code][/code] (выделяйте код и нажимаете на кнопку "Код"). Не забывайте выбирать при этом соответствующий язык.
  • Помните: один топик - один вопрос!
  • В данном разделе запрещено поднимать темы, т.е. при отсутствии ответов на Ваш вопрос добавлять новые ответы к теме, тем самым поднимая тему на верх списка.
  • Если вы хотите, чтобы вашу проблему решили при помощи определенного алгоритма, то не забудьте описать его!
  • Если вопрос решён, то воспользуйтесь ссылкой "Пометить как решённый", которая находится под кнопками создания темы или специальным флажком при ответе.

Более подробно с правилами данного раздела Вы можете ознакомится в этой теме.

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

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


 




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


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

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