LINUX.ORG.RU

Опять ООП

 


0

1

Подскажите мне как оценить свой уровень владение ООП? Есть ли какой нибудь стандарт ООП?

★★

Последнее исправление: Int0l (всего исправлений: 2)

Напиши класс животное и класс кошка. Сделай наследование, инкапсуляцию и полиморфизм за счет оверрайда функции speak().

unt1tled ★★★★
()
Ответ на: комментарий от unt1tled

А как же принцип абстракции . Разве не зная всех абстракция языка, я могу сказать что знаю ООП языка?

Int0l ★★
() автор топика
Ответ на: комментарий от Int0l

я могу сказать что знаю ООП языка?

Может быть не ООП языка, а язык ООП?

ados ★★★★★
()
Ответ на: комментарий от unt1tled

Напиши класс животное и класс кошка. Сделай наследование, инкапсуляцию и полиморфизм за счет оверрайда функции speak().

а для того, чтобы оценить уровень фладения ФП, надо написать факториал?

jtootf ★★★★★
()
Ответ на: комментарий от Int0l

Разве не зная всех абстракция языка, я могу сказать что знаю ООП языка?

почему бы не обобщить это просто до знания семантики языка, независимо от того, какие парадигмы язык поддерживает?

jtootf ★★★★★
()

Почему эта тема в development?

Подскажите мне как оценить свой уровень владение ООП?
уровень владения

Вам по какой шкале? ООП это методология, т.е. система каких-либо принципов/положений/методов/etc. Те кто говорят «знаю ООП», или «владею ООП на определенном уровне» (почти всегда это значит что они постигли дзен, конечно же), обычно подразумевают под этим свои влажные фантазии. Не более.

Есть ли какой нибудь стандарт ООП?

Как и у любой системы, у ООП есть свой фундамент, сейчас вам здесь расскажут о трех китах, и прочем бреде.
Для того чтобы научиться понимать какую-либо систему, нужно постоянно работать с ней. ООП не исключение. Практика — это и единственная возможность «понять ООП», и единственная возможность оценить «уровень владения», как не странно.
Поэтому, чтобы понять оценить свой «уровень владения», в этом же треде сами себе задайте задачу, и сами спроектируйте ее объектную структуру. По результатам вы все поймете сами.
Если же вам нужны просто тесты на знания элементарных вещей — в интернете их полно. Как правило это тесты с вопросами в духе «чем абстрактный класс отличается от интерфейса?» бла-бла-бла и прочий бред.

znenyegvkby
()

По теме: покажи свой код в котором ты использовал, как ты считаешь, ООП.

ados ★★★★★
()
Ответ на: комментарий от vvn_black

умение реализовать паттерны

Но паттерны-то, какое отношение имеют к ООП?
Ты же про шаблоны-templates?
Так макросы это вполне себе «шаблоны» в худшем смысле этого слова.

Stahl ★★☆
()
Ответ на: комментарий от Stahl

Ты же про шаблоны-templates?

Нет, он про дизайн паттерны. Умение увидеть в куске кода и наборе объектов, какой паттерн используется разработчиком.

invy ★★★★★
()
Ответ на: комментарий от jtootf

а для того, чтобы оценить уровень фладения ФП, надо написать факториал?

Факториал нужен не для того, чтобы оценить уровень, а для того, чтобы проследить эволюцию, ЕВПОЧЯ.

theNamelessOne ★★★★★
()

Запили ооп-модель на лексических замыканиях.

Debasher ★★★★★
()
Ответ на: комментарий от jtootf

а для того, чтобы оценить уровень фладения ФП, надо написать факториал?

Или фибоначчи. Главное, чтобы на 'Ф' начиналось.

korvin_ ★★★★★
()
Последнее исправление: korvin_ (всего исправлений: 1)

Дать ссылку на свой GitHub. А мы всё обругаемрасскажем. Если GitHub-а или Bitbucket-а, или чего-то аналогичного нет (а ты не разрабатываешь уже несколько лет на профессиональном уровне), то, скорее всего, всё довольно печально.

peregrine ★★★★★
()
Ответ на: комментарий от invy

он про дизайн паттерны.

Именно так. Не только умение увидеть, но и самому запилить фабрику, обсервер etc.

ООП - это абстракция. Дизайн-паттерны - тоже абстракция, как мне кажется их навязывают в большой мере для того, чтобы оправдать применение ООП.

И для оценки уровня владения ООП совсем не важен ЯП. Не забывайте «применение объектно-ориентированного языка вовсе не означает, что код автоматически становится объектно-ориентированным».

vvn_black ★★★★★
()

Подскажите мне как оценить свой уровень владение ООП?

вы Алесандреску или Страуструп ? 1 балл

иначе 0

MKuznetsov ★★★★★
()

Попробуй убедить собеседника в том, что знаешь, что такое ООП, грамотно уклонившись от всех вопросов про определение.

anonymous
()
Ответ на: комментарий от jtootf

отвратительный критерий

Обоснуй?

Я свою мысль разверну.

Проверять уровень владения ООП на примерах точка->линия->фигура или животное->кошка, это как проверять знание арифметики счетом на пальцах. Проверить можно, но уровень владения не покажет.

А если, к примеру, ты познал такую абстракцию, как синглетон, да, ещё и реализовать её можешь на конкретном инструменте - это уже показатель.

vvn_black ★★★★★
()

Опять ООП
владение ООП
стандарт ООП

Не надоело еще?

Sectoid ★★★★★
()
Ответ на: комментарий от vvn_black

да нет. паттерны - это паттерны. они к ООП отношения не имеют и могут быть реализованы и без ООП. это маленько другой уровень. а сам по себе ООП - это просто одна из фич ЯП. ну, в некоторых языках без него вообще нельзя программировать. сам по себе ООП - понятие, скорее, самоценное для студентов. на практике, конечно, паттерны и конкретный опыт работы важнее. а чисто чтобы «знать ООП» - это именно задачки про кошек и треугольники.

Iron_Bug ★★★★★
()
Ответ на: комментарий от Stahl

Но паттерны-то
Ты же про шаблоны-templates?

Вам рановато пока отвечать в разделе Development. Вот с вопросами приходите.

anonymous
()
Ответ на: комментарий от Iron_Bug

они к ООП отношения не имеют и могут быть реализованы и без ООП

Смотря какие. Реализовать абстрактную фабрику или синглтон без ООП у вас не выйдет, например.

anonymous
()
Ответ на: комментарий от anonymous

да с хрена ли? начнём с того, что я могу хоть на ассемблере эти ваши классы реализовать. просто на ассемблере оно даром не нужно и вопрос целесообразности встаёт.
люди-то жили и до ООП. и всё работало.

Iron_Bug ★★★★★
()
Последнее исправление: Iron_Bug (всего исправлений: 1)
Ответ на: комментарий от vvn_black

Знание паттернов — это знание паттернов. Знание ООП — это ровно понимание работы виртуальных функций, наследования классов и ничего более сверх того.

anonymous
()
Ответ на: комментарий от Iron_Bug

они к ООП отношения не имеют и могут быть реализованы и без ООП

Я немного не об этом.

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

Применительно к ООП, как мне кажется, паттерны очень даже подходят для проверки уровня владения этим самым ООП.

vvn_black ★★★★★
()
Ответ на: комментарий от Iron_Bug

Начнём с того, что я могу хоть на ассемблере эти ваши классы реализовать.

Тогда ваш код автоматически станет ООП. ООП — это подход, по сути, один из паттернов, удобство реализации которого стало популярно внедрять в поддержку на уровне ЯП.

anonymous
()
Ответ на: комментарий от anonymous

Знание паттернов — это знание паттернов.

Я не говорю, что знание паттернов - это знание ООП.

Я говорю, что знанием паттернов можно проверить уровень владения ООП. Это разные вещи.

Знание ООП — это ровно понимание работы виртуальных функций, наследования классов и ничего более сверх того.

А как проверить это самое понимание «3-х китов» ООП?

vvn_black ★★★★★
()
Ответ на: комментарий от jtootf

Какой субъект оценки, такой и критерий, закономерно.

(На самом деле, паттерны это немного не в ту степь, имхо)

Deleted
()
Последнее исправление: Deleted (всего исправлений: 1)
Ответ на: комментарий от Iron_Bug

могу хоть на ассемблере эти ваши классы реализовать

Очень интересно посмотреть на маленький пример такой реализации

CyberK
()
Ответ на: комментарий от CyberK

блин, да возьмите любую старую софтину на С, когда никаких классов не было. структурки, указатели на функции, вот это всё. думаете, откуда все эти ваши игрушки с ООП появились? именно оттуда. просто за вас это компилятор теперь делает, а мы раньше всё ручками писали. а то, что на С можно написать, на ассемблере тоже можно. я в своё время игралась и писала графические приложухи на ассемблере. сейчас я на нём редко пишу. у меня более важные задачи есть. так что отошлю вас самостоятельно поработать над этим заданием для студентов.

Iron_Bug ★★★★★
()
Ответ на: комментарий от vvn_black

Я говорю, что знанием паттернов можно проверить уровень владения ООП. Это разные вещи.

а я говорю, что нет. например, есть паттерны для эмбеддеда, есть паттерны для микроконтроллеров и т.д. и никакого там ООП даже близко. и даже ООП-шные паттерны можно реализовать вовсе без ООП. сложнее технически, но можно. так что паттерны - это паттерны.

Iron_Bug ★★★★★
()
Ответ на: комментарий от anonymous

Тогда ваш код автоматически станет ООП. ООП — это подход, по сути, один из паттернов, удобство реализации которого стало популярно внедрять в поддержку на уровне ЯП.

ну, теоретически да. но тогда надо выяснять, что обзывается ООП: встроенная в ЯП подсистема или абы какая реализация. а то можно дойти до сомнительного утверждения, что для знания ООП достаточно реализовать синглтон на ассемблере :)

Iron_Bug ★★★★★
()
Ответ на: комментарий от vvn_black

для начала надо дать точное определение ООП.
потому что «ООП в вакууме» существует только в теории. наверное, рисование абстрактных схем в UML нотации и есть «стандарт ООП» в чистом виде, без привязки к конкретике.

Iron_Bug ★★★★★
()
Ответ на: комментарий от jtootf

отвратительный критерий

Сначала умение реализовывать, потом видеть, а потом понимать когда не надо их всюду пихать.

DarkEld3r ★★★★★
()
Ответ на: комментарий от Iron_Bug

для начала надо дать точное определение ООП

В чем проблема?

Начнем с объекта. Объект, это нечто такое, что реагирует на внешнее воздействие, а как именно реагирует - это определяется его внутренней структурой.

ООП - формальная реализация описанного выше объекта, построенная на «3-х китах» - инкапсуляция, наследование, полиморфизм.

Вот, такое определение.

Как проверить уровень владения ООП?

vvn_black ★★★★★
()
Ответ на: комментарий от peregrine

то, скорее всего, всё довольно печально.

А если у человека только приватные репозитории? Какое у вас странное мышление :)

znenyegvkby
()
Ответ на: комментарий от Iron_Bug

сам по себе ООП - это просто одна из фич ЯП

ООП ортогонально ЯП. ЯП либо его поддерживает, либо нет. А программист может использовать ООП-подход и без поддержки со стороны языка.

slackwarrior ★★★★★
()
Ответ на: комментарий от Gvidon

Чем это не синглтон?

Всем :)
Singleton, в первую очередь, порождающий паттерн, следовательно он дает нам возможность абстрагироваться от способа/процесса создания. Вы же главного поинта паттерна не соблюдаете, поэтому ваш вариант паттерн не реализует.

znenyegvkby
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.