powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Программирование [игнор отключен] [закрыт для гостей] / Тренажер-акселератор ООП-навыков
25 сообщений из 28, страница 1 из 2
Тренажер-акселератор ООП-навыков
    #37549605
Касаткина Мария
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Приветствую любящих программирование :) !

Есть такое понятие, как умение использовать принципы ООП. Так вот хочется:
расширить свое представление о том, что такое плохо в общем случае и почему оно плохо;

натренироваться на практике распознавать нехорошие ситуации и понимать, в чем именно проблема, к каким сложностям она ведет и как ее устранить.

Чтобы было понятнее, какого характера знания-умения хочется получить, приведу несколько примеров :) :
Что видим в коде? Какие сложности ждут? Где локализуется проблема? Как устранить? Название методы интерфейса IInt работают группами, группы почти не пересекаются а) при использовании интерфейса некоторые методы все время мешаются, не нужны даже гипотетически; б) при чтении непонятно, какая часть методов будет задействована в данном куске кода само объявление интерфейса и все классы, использующие его выделить в IInt группы методов, работающих вместе, и разнести эти группы в разные интерфейсы сопряжение нескольких сущностей в одном интерфейсе вместо четкого определения конкретной функциональностиprivate-метод класса ClassParent использует абстрактный метод, реализованный в классе ClassChildBase private-метод воспринимается как вспомогательный метод с четко фиксированным поведением, а на самом деле любой может изменить это поведение через наследников общая структура ClassParent, контракты ClassParent и ClassChildBase может быть, в данной ситуации так и надо? возможность изменить поведение родителя через его наследников
Еще примеры Что видим в коде? Какие сложности ждут? Где локализуется проблема? Как устранить? Название класс-родитель и его наследники, в наследниках много похожих/одинаковых реализаций методов а) сложнее выделить специфику каждого из наследников, она "замутнена" лишним кодом; б) дублирование кода со всеми вытекающими конкретные методы в классах-наследниках вынести "одинаковость" в родителя и оставить в нем абстрактный ключик, ведущий в наследников и отвечающий за непохожесть неудачное распределение функциональности между наследником и родителемCEntityBase реализует IEntity, имеет наследников CEntity1 и CEntity2, не имеет собственных полей и методов CEntityBase как-то дополняет/конкретизирует/расширяет функциональность IEntity? когда нужно использовать интерфейс, а когда - базовый класс? контракты IEntity и CEntityBase оставить или IEntity, или CEntityBase в зависимости от контекста размножение сущностей без необходимостиметоды класса получают на вход объект; иногда класс сам проводит подготовительные-проверяющие действия для объекта, а иногда считает, что ему на вход поступает уже правильный объект а) поведение не определено точно и неизвестно, чего ожидать - класс сложно использовать; б) проверка-подготовка то проводится несколько раз, то не проводится ни одного; в) размазывание ответственности сам контракт класса и все контексты, в которых он использовался повешаться или четко распределить ответственность и привести весь код в соответствие этому распределению невнятный контракт, нечеткое определение зоны ответственности
Надеюсь, более-менее понятно описала, что хочется :) . Причем нужно не прочитать готовый анализ или вообще готовое решение (как в известной книге четырех ), а пропустить все через себя, пройти (почти) весь путь анализа самостоятельно .

Пока знаю ровно два способа такие навыки развить:

разглядывание существующего кода и попытки сделать что-то с ним (если коряво спроектировано, сразу же почувствуешь, где препятствия ; если все хорошо, то потребуется больше усилий, чтобы понять, засчет чего так получается);

беседа с опытными и хорошими товарищами (садится рядом, обращает внимание на какую-то часть кода, предлагает подумать о сложностях сейчас, при разрастании и при изменении требований, о способах устранения, может помогать наводящими вопросами, дополняет, ...).
Буду безумно счастлива, если удастся найти нечто, дающее более целенаправленный и быстрый результат, чем разглядывание существующего кода, и поменьше нагружающее других людей.

Может быть, есть какие-то книги-тренажеры ( "вот, смотрите, код... какая проблема в нем? подумайте... теперь можете подсмотреть в мой ответ... а как решить проблему? ну-ну, давайте, догадывайтесь... да, именно так! а как еще эта проблема проявляется? можете другие примеры кода придумать?" )?
Или какие-то сайты, на которых собраны плохие примеры, их анализ и способы исправления?
...
Рейтинг: 0 / 0
Тренажер-акселератор ООП-навыков
    #37549691
Фотография Worobjoff
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
По-моему, правильное использование ООП - это навыки а не знания. Как навык рисования или спортивной игры.
Пока это просто знания - ООП мешает.

Особенно мешает когда начинающий оопист начинает натягивать плоскую бизнес-логику на свое страстное желание реализовать пятиуровневую иерархию наследования.
...
Рейтинг: 0 / 0
Тренажер-акселератор ООП-навыков
    #37549797
Касаткина Мария
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Worobjoff, конечно :) .
Даже не представляю, как можно знать ООП (разве что определения инкапсуляции-наследования-полиморфизма, да и то пока их не прочувствуешь на примерах с разных сторон, врядли что-то близкое к правде сформулируешь).
Может быть, табличка натолкнула вас на такие мысли? Она действительно производит впечатление каких-то теоретических изысканий, может показаться попыткой что-то зазубрить и применять где ни попадя... Вобщем это ложное впечатление, табличка родилась именно из выстраданных навыков :) .

Итак, получение навыков... Но не вялотекущее получение, а целенаправленная тренировка на специальных примерах . Просто работая с кодом, ты можешь столкнуться с проблемой, а можешь и не столкнуться; если столкнешься, то будешь исправлять одни и те же ошибки несколько раз, ... . А с коллекцией компактных примеров плохого использования ООП дело пойдет куда лучше, вот только где она :)) ?
...
Рейтинг: 0 / 0
Тренажер-акселератор ООП-навыков
    #37549840
Фотография Worobjoff
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В таблице очень полезные вещи. Но что-то касается навыков, а что-то просто чистоты кода.
Вот это
методы класса получают на вход объект; иногда класс сам проводит подготовительные-проверяющие действия для объекта, а иногда считает, что ему на вход поступает уже правильный объект
Касается архитектуры и здесь нужно делать четкий и однозначный выбор на весь проект.

а это:
методы интерфейса IInt работают группами, группы почти не пересекаются
- невинная неряшливость.
...
Рейтинг: 0 / 0
Тренажер-акселератор ООП-навыков
    #37549970
Фотография Яростный Меч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
авторТренажер-акселератор ООП-навыковжизнь - вот лучший тренажер, да.
...
Рейтинг: 0 / 0
Тренажер-акселератор ООП-навыков
    #37550017
Фотография tchingiz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Касаткина Мария,
ну, решите задачку как упорядочить наследованием натуральные, целые, рациональные.
Кто чей родитель. И кто из них подтип кого.
...
Рейтинг: 0 / 0
Тренажер-акселератор ООП-навыков
    #37550068
egorych
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
tchingizКасаткина Мария,
ну, решите задачку как упорядочить наследованием натуральные, целые, рациональные.
Кто чей родитель. И кто из них подтип кого.и квадраты с прямоугольниками ещё, конечно, на закуску ))
...
Рейтинг: 0 / 0
Тренажер-акселератор ООП-навыков
    #37550695
Касаткина Мария
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
WorobjoffВ таблице очень полезные вещи. Но что-то касается навыков, а что-то просто чистоты кода.
...
Касается архитектуры и здесь нужно делать четкий и однозначный выбор на весь проект.:)

Worobjoffа это:
методы интерфейса IInt работают группами, группы почти не пересекаются
- невинная неряшливость.Теперь знаю, что кто-то совсем не считает это проблемой. Спасибо :) .

Яростный МечавторТренажер-акселератор ООП-навыковжизнь - вот лучший тренажер, да.Да, кстати! Если вы в жизнь не видели никаких тренажеров или не верите в их эффективность, тоже не стесняйтесь писать! Это тоже важно :) !
Можно просто плюсик к этому сообщению поставить - я все пойму ;) .
...
Рейтинг: 0 / 0
Тренажер-акселератор ООП-навыков
    #37550710
Касаткина Мария
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
tchingizКасаткина Мария,
ну, решите задачку как упорядочить наследованием натуральные, целые, рациональные.
Кто чей родитель. И кто из них подтип кого.egorychи квадраты с прямоугольниками ещё, конечно, на закуску ))Не вижу смысла как-то упорядочивать наследованием относительно друг друга ни числа, ни квадрат с прямоугольником. Более того, мне это действие вообще кажется каким-то противоестественным: рациональное число совсем не повторяет структуру натурального, квадрат заставить работать как прямоугольник тоже непросто (т.е. можно, конечно, но придется уже искусственно вводить для него ширину и высоту).

Но общее у них, конечно, есть - функциональность. Для чисел это умение складываться/умножаться с кем-то, получать модуль и квадрат себя, для квадрата и прямоугольника - умение отрисовывать себя и т.п.. Для этого всего, по-моему, достаточно просто интерфейса :) .

tchingiz...tchingiz, у вас в профиле очень интересная фраза о формализации ООП :) . Вы явно что-то знаете ;) !
...
Рейтинг: 0 / 0
Тренажер-акселератор ООП-навыков
    #37550749
Касаткина Мария
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
tchingizКасаткина Мария,
ну, решите задачку как упорядочить наследованием натуральные, целые, рациональные.
Кто чей родитель. И кто из них подтип кого.Как-то так:
Кусочек кода:
Код: 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.
34.
35.
36.
 public   interface  IsNumber
{
	 public  IsNumber getModulus ();
	 public  IsNumber getSquared ();

	 public  IsNumber add (IsNumber toAdd);
	...
}

 public   class  NumberNatural
	 implements  IsNumber
{
	// значение, присваиваемое m_value, проверяется на >0
	 private   int  m_value;
}

 public   class  NumberWhole
	 implements  IsNumber
{
	// если нужен ноль, то m_sign = 0
	 private   byte 		m_sign;
	 private  NumberNatural	m_modulus;
}

 public   class  NumberRational
	 implements  IsNumber
{
	 private  NumberWhole	m_numerator;
	 private  NumberWhole	m_denominator;
}

 public   class  NumberComplex
	 implements  IsNumber
{
	 private  NumberRational	m_re;
	 private  NumberRational	m_im;
}
egorychи квадраты с прямоугольниками ещё, конечно, на закуску ))Если считать, что стоит задача сделать все максимально универсально и правильно с точки зрения ООП, то для квадрата и прямоугольника я бы сделала что-то такое:



Это как-то помогает выйти на тренажер :) ?
...
Рейтинг: 0 / 0
Тренажер-акселератор ООП-навыков
    #37550768
Фотография tchingiz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Касаткина МарияtchingizКасаткина Мария,
ну, решите задачку как упорядочить наследованием натуральные, целые, рациональные.
Кто чей родитель. И кто из них подтип кого.egorychи квадраты с прямоугольниками ещё, конечно, на закуску ))Не вижу смысла как-то упорядочивать наследованием относительно друг друга ни числа, ни квадрат с прямоугольником. Более того, мне это действие вообще кажется каким-то противоестественным: рациональное число совсем не повторяет структуру натурального,

лично мне кажется противоестественной фраза

"рациональное число не повторяет структуру натурального"
равно как и гуглю. Ибо как видно из поиска
http://www.google.com.ua/#hl=ru&gbv=2&q=%22%D1%81%D1%82%D1%80%D1%83%D0%BA%D1%82%D1%83%D1%80%D0%B0+%D0%BD%D0%B0%D1%82%D1%83%D1%80%D0%B0%D0%BB%D1%8C%D0%BD%D0%BE%D0%B3%D0%BE+%D1%87%D0%B8%D1%81%D0%BB%D0%B0%22&oq=%22%D1%81%D1%82%D1%80%D1%83%D0%BA%D1%82%D1%83%D1%80%D0%B0+%D0%BD%D0%B0%D1%82%D1%83%D1%80%D0%B0%D0%BB%D1%8C%D0%BD%D0%BE%D0%B3%D0%BE+%D1%87%D0%B8%D1%81%D0%BB%D0%B0%22&aq=f&aqi=&aql=1&gs_sm=e&gs_upl=7074l17550l0l18510l23l21l1l0l0l0l286l2883l5.9.5l19l0&bav=on.2,or.r_gc.r_pw.,cf.osb&fp=d1bb1bdd18f53049&biw=1420&bih=759

такую эээээээ фигню несут цепочку кроме Вас используют только два или три философа.

Вас не спрашивают про смысл задачи, а попросили ее решить.
В ответ можно или решить задачу,
или доказать, что она нерешабельна,
или отказаться от ее решения.
Вы, похоже, отказались.
...
Рейтинг: 0 / 0
Тренажер-акселератор ООП-навыков
    #37550770
Фотография tchingiz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
egorychtchingizКасаткина Мария,
ну, решите задачку как упорядочить наследованием натуральные, целые, рациональные.
Кто чей родитель. И кто из них подтип кого.и квадраты с прямоугольниками ещё, конечно, на закуску ))
ну есть еще у нас мелкие недостатки
)))
...
Рейтинг: 0 / 0
Тренажер-акселератор ООП-навыков
    #37550780
Leonidv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Касаткина МарияПриветствую любящих программирование :) !

Есть такое понятие, как умение использовать принципы ООП. Так вот хочется:
расширить свое представление о том, что такое плохо в общем случае и почему оно плохо;

натренироваться на практике распознавать нехорошие ситуации и понимать, в чем именно проблема, к каким сложностям она

Рефакторинг Фаулера, Чистый код Мартина, Совершенный код МакКоннела.

Здравый смысл как последний довод.
...
Рейтинг: 0 / 0
Тренажер-акселератор ООП-навыков
    #37550884
Касаткина Мария
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
tchingiz...Вы что-то сильно перепутали: по теме ничего не написали, по вами же предложенной задаче ничего не написали, приняли какой-то повышенный тон... И цепочки нет никакой.
Если считаете, что что-то не так, то поясните, где именно, почему именно и т.п., или хотя бы приведите конкретные контр-примеры, а разбрасываться общими фразами не надо. Беспредметными препирательствами заниматься нет никакого желания (и возможности, к счастью, тоже).

LeonidvРефакторинг Фаулера, Чистый код Мартина, Совершенный код МакКоннела.О, наконец-то что-то есть :) ! Спасибо большое, посмотрю прямо сейчас.

LeonidvЗдравый смысл как последний довод.
Почему последний-то :) ?! А что тогда на первом месте ;) ?
...
Рейтинг: 0 / 0
Тренажер-акселератор ООП-навыков
    #37550887
Фотография Яростный Меч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Касаткина МарияЯростный МечавторТренажер-акселератор ООП-навыковжизнь - вот лучший тренажер, да.Да, кстати! Если вы в жизнь не видели никаких тренажеров или не верите в их эффективность, тоже не стесняйтесь писать!для накачки мускулов оные вполне подходят, вы не волнуйтесь, у меня с этим полный порядок :)
а "тренажеры для изучения ООП" - впервые слышу.
...
Рейтинг: 0 / 0
Тренажер-акселератор ООП-навыков
    #37550931
kolobok0
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Касаткина Мария....приведу несколько примеров...

когда напишите примеры из области ООА и ООП - скажите. Пока вижу чисто технический инструментарий. Вас для понимания - отсылаю эээээээээээ близко, к Гради Бучу. Это один из основателей. Рекомендую читать его книгу внимательно, не торопясь, лучше попутно решая задачи из своей работы. После 3 - 5 задачи прийдёт просветление.


а язык - это просто язык.
я собственно очень часто использую ООА при написании программ на азме. какая нафик разница то? или Вы только полиморфизм считаете за ОО? тогда это не понимание предмета...

удачи вам, она вам потребуется
(круглый)
...
Рейтинг: 0 / 0
Тренажер-акселератор ООП-навыков
    #37550950
жук ботан
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
tchingizКасаткина Мария,
ну, решите задачку как упорядочить наследованием натуральные, целые, рациональные.
Кто чей родитель. И кто из них подтип кого.

опять )
...
Рейтинг: 0 / 0
Тренажер-акселератор ООП-навыков
    #37551157
egorych
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Касаткина МарияЭто как-то помогает выйти на тренажер :) ?да нет, Мария, вы не поняли, не обижайтесь, ради бога. Эти две задачи, числа и квадраты - старые излюбленные темы здесь на форуме, если про ООП. Вон, верхний закрытый прибитый тред про design by contract на 2/3 им посвящён. ))
...
Рейтинг: 0 / 0
Тренажер-акселератор ООП-навыков
    #37551158
egorych
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
жук ботанопять )а чё, давно уже не вспоминали-то ;-))
...
Рейтинг: 0 / 0
Тренажер-акселератор ООП-навыков
    #37551178
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Через 100 страниц (Всем привет!) сюда подтянутся Лисёк с Баз-ом. Они вам покажут акселератор ООП... хе-хе...
...
Рейтинг: 0 / 0
Тренажер-акселератор ООП-навыков
    #37551287
Фотография k0rvin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
tchingizну есть еще у нас мелкие недостатки
)))

ua.agp1.typesSetsClasses 0.99, стр. 5, последний абзац 2.1:
В Функциональном программировании на Haskel [4] утверждается
тоже самое:
...
Рейтинг: 0 / 0
Тренажер-акселератор ООП-навыков
    #37551290
Фотография k0rvin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
и тут же: s/тоже самое/то же самое/
...
Рейтинг: 0 / 0
Тренажер-акселератор ООП-навыков
    #37551321
Фотография Worobjoff
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Да, Фаулер конечно! Я думал вы уже знаете о нем.
Поищите его статьи, Например здесь
Почитайте код, особенно интересно как он развивает программный код по ходу изложения статьи
...
Рейтинг: 0 / 0
Тренажер-акселератор ООП-навыков
    #37551724
ИринаВ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Касаткина МарияLeonidvЗдравый смысл как последний довод.
Почему последний-то :) ?! А что тогда на первом месте ;) ?
Воот. Мне не оч. нра исх. постановка: ООП, это жеж не самостоятеьная ценность, а метод. Не?
А выбор метода ИМХО должен вытекать из задачи + это вопрпос личного вкуса. Соотв. навыки ООП развиваются ТОЛЬКО из опыта решения задач, к-рые "просятся" на этот метод.
Хотя: иногда ООП, это требование, от начальства, к-рое дурных книжек начиталось, на ночь.
...
Рейтинг: 0 / 0
Тренажер-акселератор ООП-навыков
    #37552013
Фотография tchingiz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
k0rvinи тут же: s/тоже самое/то же самое/
спасибо, фиксед. тек. версия 0.992
...
Рейтинг: 0 / 0
25 сообщений из 28, страница 1 из 2
Форумы / Программирование [игнор отключен] [закрыт для гостей] / Тренажер-акселератор ООП-навыков
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]