Как сделать так, чтобы в одном классе одинаковые методы были разные (Delphi и желательно, C++)

Компьютеры программирование Delphi делфи ООП

Сразу предупреждаю, что в ООП не силён.
Например есть класс
type TSomeClass = class (TObject)
public
procedure SomeMethod;
end;

А так же объекты:

FSomeObj, SSomeObj: TSomeClass;

И нужно, чтобы метод SomeMethod был разным в этих объектах. Например, в FSomeObj он выводил тупо на экран что-нибудь, а в SSomeObj он открывал другое окно. Ну, к примеру.

Примечание:
t00z
>> Это называется перегрузка методов.
Перегрузкой методов, насколько я знаю, называется тот случай, когда несколько процедур имеют одно названия, но разные аргументы. По крайней мере, в C++.

А вот как же события(event'ы) в кнопках, допустим. Класс TButton имеет одни и те же методы, но действия объектов(кнопок) естественно различаются, т.е СОБЫТИЯ описаны по разному. Я заглядывал по этому поводу в модуль StdCtrls, но там все сделано непонятно. Судя по всему это только применимо для VCL-компонентов, а не таких классов, как я привел.
Приведите, пожалуйста пример кодом, что можно сделать с этим простеньким классом и методом

Примечание:
Kekto Все таки мне это нужно для гораздо большего количество объектов (штук 20). И что, мне постоянно наследовать. По-моему, это не вариант и как раз он нарушает принцип ООП

Примечание:
Animalia, возможно вы и правы. Но тогда FSomeObj и SSomeObj будут являтся не объектами, а классами. что нарушает принцип

Примечание:
R34, хорошо, ну тогда может приведете пример с обработчиком событий здесь? А разве, event'ы используется не только в визуальных компонентах?
Ответы:
Это называется перегрузка методов.
я хз про делфи, но
так сделать класс интерфейс, а другие его будут реализовывать
ну или наследование
Почитайте принципы ООП,
вариант для SSomeObj создать класс потомок от TSomeClass, с перегруженной процедурой SomeMethod
Если методы не отличаются параметрами и они - объекты одного и того же класса, то в пределах одного класса не перегрузить.
Для этого используют динамический полиморфизм: объявляют интерфейс, наследуются от него, и реализуют по-разному виртуальные методы. Например, так:
type FSomeObj = class (TSomeClass)
public
procedure SomeMethod; Override;
end;
>> А вот как же события(event'ы) в кнопках
Там другой принцип, обработчики событий не являются методами класса, события которого они обрабатывают.
в одном классе? а зачем? логика же должна какая-то быть. я понимаю если нужно изменить метод у дочернего класса, тогда да, перегрузка метода. Причем логичнее тогда вообще сделать так, как сказал Amon-Ra, нужно объявить абстрактный класс (ну или в терминах java - интерфейс), отнаследовать от него два дочерних класса и там реализовать уже метод так, как нужно в конкретном случае.
про ивенты: на самом деле здесь ООП тоже работает. класс TButton только декларирует некую кнопку, ее основные свойства и методы, а вы создаете конкретную кнопку - объект класса, и Click вы сами описываете, так же как и конкретный размер кнопки, ее положение, то, что на ней написано и тд.
Основы ООП читать вам я думаю нужно. Это дело недолгое.


13 лет назад

RPI.su - самая большая русскоязычная база вопросов и ответов. Наш проект был реализован как продолжение популярного сервиса otvety.google.ru, который был закрыт и удален 30 апреля 2015 года. Мы решили воскресить полезный сервис Ответы Гугл, чтобы любой человек смог публично узнать ответ на свой вопрос у интернет сообщества.

Все вопросы, добавленные на сайт ответов Google, мы скопировали и сохранили здесь. Имена старых пользователей также отображены в том виде, в котором они существовали ранее. Только нужно заново пройти регистрацию, чтобы иметь возможность задавать вопросы, или отвечать другим.

Чтобы связаться с нами по любому вопросу О САЙТЕ (реклама, сотрудничество, отзыв о сервисе), пишите на почту [email protected]. Только все общие вопросы размещайте на сайте, на них ответ по почте не предоставляется.