Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Будь моя воля, я бы ООП вообще запретил!
|
|||
|---|---|---|---|
|
#18+
tchingizимелось ввиду создание двух и больше обьектов. Вопрос остался. Есть класс А и его наследник класс В, в котором некоторые св-ва и методы переопределены. Создаем объекты в А и В, в классах А и В появляются соотв. экземпляры. Перебираем все экземпляры класса А. Применять ним только методы А нельзя из-за переопределения. Получается что для работы с А нужен доступ к св-ам и методам В, что неверно. Если создавать пару объектов А и В проблема изчезает. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.07.2006, 09:23 |
|
||
|
Будь моя воля, я бы ООП вообще запретил!
|
|||
|---|---|---|---|
|
#18+
полиморфизм ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.07.2006, 10:05 |
|
||
|
Будь моя воля, я бы ООП вообще запретил!
|
|||
|---|---|---|---|
|
#18+
Gluk (Kazan)полиморфизм ? Вроде наоборот. полиморфизм - наследование метода для использования, а проблема возникает при переопределении метода(св-ва), т.е появляется новый метод(св-во). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.07.2006, 11:07 |
|
||
|
Будь моя воля, я бы ООП вообще запретил!
|
|||
|---|---|---|---|
|
#18+
мод Gluk (Kazan)полиморфизм ? Вроде наоборот. полиморфизм - наследование метода для использования, а проблема возникает при переопределении метода(св-ва), т.е появляется новый метод(св-во). полиморфизм это различие в поведении метода в зависимости от типа объекта ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.07.2006, 13:23 |
|
||
|
Будь моя воля, я бы ООП вообще запретил!
|
|||
|---|---|---|---|
|
#18+
Различия может не быть. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.07.2006, 14:02 |
|
||
|
Будь моя воля, я бы ООП вообще запретил!
|
|||
|---|---|---|---|
|
#18+
без проблем, дайте свое определение прежде чем спорить, стоит определиться с терминами ;) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.07.2006, 14:06 |
|
||
|
Будь моя воля, я бы ООП вообще запретил!
|
|||
|---|---|---|---|
|
#18+
забавно наблюдать как народ спорит что такое полиморфизм, не до конца понимая что это на самом деле. А полиморфизм без особого формализма на примере С++ - это шаблоны, нисходящее и восходящее преобразование, перегрузка ... что ещё я забыл? ... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.07.2006, 14:47 |
|
||
|
Будь моя воля, я бы ООП вообще запретил!
|
|||
|---|---|---|---|
|
#18+
Gluk (Kazan)без проблем, дайте свое определение прежде чем спорить, стоит определиться с терминами ;) Да я и не спорю. Для меня это не имеет значения - в клиппере все процедуры-функции 100% полиморфны. Но проблема наследования осталась. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.07.2006, 14:51 |
|
||
|
Будь моя воля, я бы ООП вообще запретил!
|
|||
|---|---|---|---|
|
#18+
мод tchingizимелось ввиду создание двух и больше обьектов. Вопрос остался. Есть класс А и его наследник класс В, в котором некоторые св-ва и методы переопределены. Создаем объекты в А и В, в классах А и В появляются соотв. экземпляры. Перебираем все экземпляры класса А. Применять ним только методы А нельзя из-за переопределения. Получается что для работы с А нужен доступ к св-ам и методам В, что неверно. Если создавать пару объектов А и В проблема изчезает. эээ. не допонял. что значит перебираем все экземпляры класса A? кстати, в трактовке класса обнаружились расхождения. я, всегда воспринимал два различных класса как различные множества. то есть пересечение A c B в Вашем случае пусто. по другой (возможно более правильной) трактовке - B строго включается в A. таким образом класс object из сшарп надо понимать как "максимальный" (может наибольший) класс, содержащий все остальные классы сишарпа.. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.07.2006, 01:47 |
|
||
|
Будь моя воля, я бы ООП вообще запретил!
|
|||
|---|---|---|---|
|
#18+
tchingizчто значит перебираем все экземпляры класса A? ну раз есть класс то есть и его экземпляры. Для родителя это его собственные объекты+все объекты-наследники. Это множество можно перебрать, т.е. например распечатать. Проблема как раз и возникает из-за того что экземпляры оказываются разные по свойствам. tchingiz кстати, в трактовке класса обнаружились расхождения. я, всегда воспринимал два различных класса как различные множества. то есть пересечение A c B в Вашем случае пусто. Правильность этого я и пытаюся доказать. tchingiz по другой (возможно более правильной) трактовке - B строго включается в A. таким образом класс object из сшарп надо понимать как "максимальный" (может наибольший) класс, содержащий все остальные классы сишарпа.. Это подход принятый в ООП языках. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.07.2006, 09:18 |
|
||
|
Будь моя воля, я бы ООП вообще запретил!
|
|||
|---|---|---|---|
|
#18+
ню ню, и как это будет выглядеть при множественном наследовании ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.07.2006, 12:21 |
|
||
|
Будь моя воля, я бы ООП вообще запретил!
|
|||
|---|---|---|---|
|
#18+
Gluk (Kazan)ню ню, и как это будет выглядеть при множественном наследовании ? что именно ? подход ООП: создаем объект-наследник - автомптически появляются экземпляры во всех классах-родителях ИМХО д.б. так: создаем объект-наследник + создаем объекты во всех классах-родителях и связываем их ссылками ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.07.2006, 14:44 |
|
||
|
Будь моя воля, я бы ООП вообще запретил!
|
|||
|---|---|---|---|
|
#18+
Gluk (Kazan)без проблем, дайте свое определение прежде чем спорить, стоит определиться с терминами ;) Чтобы понять, лучше попробовать Гнездо P.11. Объекты. Виртуальные методы. Позднее связывание ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.07.2006, 15:38 |
|
||
|
Будь моя воля, я бы ООП вообще запретил!
|
|||
|---|---|---|---|
|
#18+
мод - понял. попробую перечитать Вас еще раз. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.07.2006, 02:43 |
|
||
|
Будь моя воля, я бы ООП вообще запретил!
|
|||
|---|---|---|---|
|
#18+
модПеребираем все экземпляры класса А. Применять ним только методы А нельзя из-за переопределения Что значит нельзя? Мы вызываем метод, спецификация определна в классе A? а "переопределен", - это дело реализации. Ну вот есть общий класс предок "интерфесные элементы" и у него в спецификации есть метод show(). Мы перебираем все эти элементы и тупо делаем каждому show(), и, благодоря переопределённым реализациям, они показываются то как линия , то как окно то как текст и .тд. А если бы этого не было мы должны были бы написать "если элемент.тип=окно вызвать show_окно иначе если элемент.тип=текст вызвать show_текст...". Мне этого не надо. модЕсли создавать пару объектов А и В проблема изчезаетНе понимаю что за проблема то? Что Вы хотите делать с объектом А в этом случае? зачем он вам вообще нужен? мода проблема возникает при переопределении метода(св-ва), т.е появляется новый метод(св-во). новый метод НЕ появляется. появляется новая реализация метода, но это к использованию метода никакого отношения не имеет, поскольку "использование метода" подразумевает вызов метода по его спецификации которая никак не меняется ,а реализация - она инкапсулирована и пользователь про нее ничего не знает и знать не должен. модПроблема как раз и возникает из-за того что экземпляры оказываются разные по свойствам Еще раз. Не понимаю - какая проблема? На каком-нибуть простом примере можно проиллюстрировать эту проблему? модИМХО д.б. так: создаем объект-наследник + создаем объекты во всех классах-родителях и связываем их ссылками Еще раз - зачем объекты в классах родителях нужны? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.07.2006, 18:04 |
|
||
|
Будь моя воля, я бы ООП вообще запретил!
|
|||
|---|---|---|---|
|
#18+
U-geneНе понимаю что за проблема то? Был класс А, для него были написаны методы. Затем появляются наследник В. При этом поведение методов А не должно никак измениться из-за их переопределения в В. Экземпляры А должны обрабатываться исходными методами А. Т.е. наследование не должно никак влиять на св-ва и методы родителя. У вас получается ровно наоборот. ps пример не доказательство pps две разные программы решающие одну и ту же задачу конечно можно называть разными реализациями - это просто вопрос терминологии. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.07.2006, 09:23 |
|
||
|
Будь моя воля, я бы ООП вообще запретил!
|
|||
|---|---|---|---|
|
#18+
модБыл класс А, для него были написаны методы. Затем появляются наследник В. При этом поведение методов А не должно никак измениться из-за их переопределения в В. Экземпляры А должны обрабатываться исходными методами А. Т.е. наследование не должно никак влиять на св-ва и методы родителяИМХО это опять бла-бла-бла. Вы 1) ...Вы конкретный пример можете привести, при котором полиморфные методы вредят? 2) ...Если нужно, что бы "поведение методов А недолдно икак изменяться", зачем их вообще переопределять? Так пусть реализация останентся прежней и нет проблемы. модПри этом поведение методов А не должно никак измениться из-за их переопределения в В. ... продолжая пример про окна - пусть текст выводися как линия, пусть окно выводится как линия. Я привел совершенноо конкретный пример, когда НУЖНО , что бы реализация метода менялась у классов наследников. Приведите мне такой же конкретный пример ,когда НУЖНО что бы реализация не менялась (при этом объясните, зачем ее кто-то все же будет менять, ежели оно не нужно). Или приведите мне конкретный пример когда НУЖНО , что бы для объекта класса-наследника паралельно существовал существовал объект родительского класса. Объясните зачем этот последний объект нужен (на совершенно конкретном примере). И насчет примеров... модпример не доказательство ...Ой-ли? 1) Например пусть есть утверждение "сумма двух целых не может быть четным числом". Я привожу пример 1+1=2. Тем самым я доказываю, что утверждение неверно. 2) Применительно к кактегории "нужно - не нужно" примеры ИМХО служат основным доказательством. Это не теорем Пифагора. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.07.2006, 10:00 |
|
||
|
Будь моя воля, я бы ООП вообще запретил!
|
|||
|---|---|---|---|
|
#18+
позвольте ремарку. мне кажется, что писуя про А и Б в ооп, мод все время держит в виду не ооп, а звезду в некой конкретной реляционной реализации "объектов" и их "наследников" (в некоторй субд). Тогда, если какое то _поле_ определено для "реляционной-сущности-"объекта" (т.е. таблицы), и это же поле (одноименное поле , но с другим типом) определено и для "реляционной-сущности-наследника", то для наследника имеем в такой вот реализации "наследования" и "старое" поле в таблице А, и новое поле в таблице Б. И он не видит, что в ооп такого просто нет. по крайней мере в некоторых языках, реализующих ооп. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.07.2006, 10:47 |
|
||
|
Будь моя воля, я бы ООП вообще запретил!
|
|||
|---|---|---|---|
|
#18+
модБыл класс А, для него были написаны методы. Затем появляются наследник В. При этом поведение методов А не должно никак измениться из-за их переопределения в В. Экземпляры А должны обрабатываться исходными методами А. И в чем проблема? Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. Это то, что Вам нужно? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.07.2006, 11:10 |
|
||
|
Будь моя воля, я бы ООП вообще запретил!
|
|||
|---|---|---|---|
|
#18+
U-gene 2) ...Если нужно, что бы "поведение методов А недолдно икак изменяться", зачем их вообще переопределять? Так пусть реализация останентся прежней и нет проблемы. Есть проблема - наследованием может заниматься другой разработчик и он не должен портить уже сделанное другими. Примеров приводить не буду по вышеуказанной причине. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.07.2006, 11:13 |
|
||
|
Будь моя воля, я бы ООП вообще запретил!
|
|||
|---|---|---|---|
|
#18+
[quot softwarer] Код: plaintext 1. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.07.2006, 13:02 |
|
||
|
Будь моя воля, я бы ООП вообще запретил!
|
|||
|---|---|---|---|
|
#18+
модЕсть проблема - наследованием может заниматься другой разработчик и он не должен портить уже сделанное другими. Сильный аргумент:) Почему Вы так плохо о разработчиках думаете? Другой разработчик ничего не портит. Он в любом случае никак не сможет испортить реализацию родительского класса. Он может создать другую реализацию, которая ему нужна. При этом для объектов созданных как объекты родительского класса будет выполняться старая реализация, для объектов класса наследника - новая (та которая для них нужна). Я вот одного не пойму. Текущая страница началась с утверждения, что де при создании объекта класса наследника нужно создавать объект родиельского класса. Я поинтересовался а нафига это паралельный родительский объект вообще нужен? Теперь я слышу очень забавную фразу - что бы де тот, кто будет создавать объет наследник "ничего не испортил". Ну и? как существование паралельного родительского объекта позволит "ничего не испортить"? Что вообще значит это интригующая фраза - "ничего не испортить"? Приведите пожалуйста пример такой "порчи". ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.07.2006, 13:52 |
|
||
|
Будь моя воля, я бы ООП вообще запретил!
|
|||
|---|---|---|---|
|
#18+
U-geneПри этом для объектов созданных как объекты родительского класса будет выполняться старая реализация, для объектов класса наследника - новая (та которая для них нужна). Но старая программа, которая обрабатывает все экземпляры А, ожидает что и св-ва и методы будут от А, а не от В, т.е. старые, а не новые. Если такая программа наткнется на объект В с новыми св-ми, она вылетит. Поэтому и надо создать объект в А со св-ми А, а не В. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.07.2006, 14:08 |
|
||
|
Будь моя воля, я бы ООП вообще запретил!
|
|||
|---|---|---|---|
|
#18+
модизвините не понял а это что ? Приведение типа, static_cast. Короткая запись следующего: Код: plaintext 1. 2. 3. 4. 5. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.07.2006, 14:34 |
|
||
|
|

start [/forum/topic.php?fid=16&msg=33858143&tid=1346688]: |
0ms |
get settings: |
8ms |
get forum list: |
15ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
36ms |
get topic data: |
10ms |
get forum data: |
3ms |
get page messages: |
77ms |
get tp. blocked users: |
1ms |
| others: | 225ms |
| total: | 381ms |

| 0 / 0 |
