Темы, которые касаются не только тестов, IT и Quizful, вы можете создавать в новом разделе Обсуждения.

Вдобавок, появилась возможность комментировать профиль пользователя на странице профиля.

Надеемся, эти нововведения Вам понравятся.
Знаете ли Вы, что

Вы можете комментировать тест как на странице с его описанием, так и на странице результатов сразу после его прохождения

Топ контрибуторов
loading
loading
Статистика

Тестов: 127, вопросов: 5126. Пройдено: 54989 / 186427.

Тест знаний ООП - Основы

Вам необходимо зарегистрироваться и войти в систему для прохождения тестов.
head tail Информация о тесте
категория
ООП
пройден1678 из 4839
вопросов в тесте16 из 23
требуется0.0 Q
сертификационныйнет
в рейтинге да
время16 минут
авторadmin
head tail Модераторы
Этот тест еще никто не модерирует

Введение

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

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

Основные парадигмы объектно-ориентированного подхода это:

  • Инкапсуляция (encapsulation)
  • Наследование (inheritance)
  • Полиморфизм (polymorphism)

Инкапсуляция позволяет скрыть внутреннюю реализацию объекта, что делает API для работы с объектами понятным и неизбыточным.

Наследование позволяет строить иерархии объектов, в которых производные классы наследуют данные и поведение классов-предков.

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

Целевая аудитория

Большинство современных языков программирования поддерживают объектно-ориентированный подход.

Именно поэтому тест по ООП будет интересен большому количеству разработчиков не зависимо от используемого или предпочитаемого языка программирования.

Структура теста

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

Некоторые вопросы теста содержат фрагменты кода на языках C++ или Java. Это сделано для того, чтобы проверить практическую сторону знаний ООП. Тем не менее данные вопросы можно решить даже не зная языки C++ и Java.

Дальнейшее развитие теста

Количество вопросов в тесте по основам ООП пока что не очень велико. Поэтому ближайшие планы команды Quizful в отношении теста по ООП - это расширение списка вопросов по данному тесту.

В будущем также планируется разбить вопросы теста на тематики.

Если Вы хотите помочь в развитии данного теста, присылайте Ваши замечания на адрес quizful at gmail dot com. Также Вы можете предложить свои вопросы для данного теста посредством формы добавления вопросов.


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

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

Комментариев: 28
 StarikUA17.06.2010 | 01:41:31
Тест хорош, мне как например начинающему программисту было очень интересно, да, вопросов маловато, но думаю со временем будет больше. Классно когда тест на 15 - 20 вопросов, но в библиотеке вопросов так 500 =) Я пока не силен в программировании, но уверенно развиваюсь, и чем смогу буду помогать развивать сайт.
Админам спасибо за сайт !! Не в тему, но всё же )
ответить
 dangmtri20.05.2010 | 05:17:41
спасибо за тест.
ответить
 Eugene_S30.04.2010 | 20:10:10
ха , справились все-то десетром и с тридцатой попытки )) хехехехе
ответить
 uelkfr19.02.2010 | 16:39:53
Я заметил, что в системе предусмотрено поле [b]Пояснение[/b]. А нельзя ли добавить еще два поля [b]Подсказка 1[/b], [b]Подсказка 2[/b]? Просмотр Подсказки 1 уменьшает итоговый балл за правильный ответ на вопрос на 25%, Подсказки 2 – на 50%.
ответить
 admin22.02.2010 | 01:01:07
За один вопрос дается только 1 балл.
ответить
 anp28.01.2010 | 18:24:47
Мне тест понравился.... Не всмомнил, что такое cohesion))) и в одном из вопросов в качестве ответа предлагался вариант: "виртуальные методы". Это специфичное для C++ (может не только) понятие. Я например Java - программист и теоретически мог бы не знать, что такое виртуальный метод.
ответить
 c0nst29.01.2010 | 12:02:23
Цитата: In Java, all methods are by default "virtual functions."
ответить
 anp30.01.2010 | 09:07:55
Да, это так. Но в большинстве случаев, когда обсуждается полиморфизм в контексте Java-программирования, о виртуальных методах упоминания просто не найти. А приведенная Вами цитата скорее всего либо из книги Брюса Эккеля, который часто делает сравнения Джавы с C++, либо из пособий типа "Java for C++ programmers". В любом случае, это не предмет для спора. Я просто хотел указать на место, где могут возникнуть затруднения у начинающего программиста. О, кстати... Вот цитата из Википедии("Виртуальный метод"): « В Java нет понятия виртуального метода, данное понятие следует применять лишь для языков в которых методы родительского класса не могут быть переопределены по умолчанию »
ответить
 RoS15.12.2009 | 00:01:44
Не очень приятны были вопросы с английскими названиями терминов, например "has-a", "cohession" ... а так отличный тест ;)
ответить
 allocator26.11.2009 | 10:27:23
Пройден с первого раза! Я в шоке Oo
ответить
 Greenpeace18.11.2009 | 00:59:37
Не очень тест. Лопухнулся в основном на названиях терминов.
ответить
 admin18.11.2009 | 11:05:45
Чтобы мы могли его улучшить, не могли бы Вы написать, что именно "не очень" в тесте?
ответить
 Greenpeace18.11.2009 | 21:58:51
Вопрос про драконов неоднозначный... побольше бы вопросов относительно эффективного написания и проектирования с использованием ООП.
ответить
 admin18.11.2009 | 22:07:00
>> Вопрос про драконов неоднозначный...
Будет интересно послушать Ваше мнение по поводу этого вопроса. Ниже в комментариях уже есть ветка на эту тему.
>> эффективного написания
Не понимаю, что Вы имеете в виду. Если Вы о написании кода, то тест не привязан к конкретному языку программирования.
>> проектирования с использованием ООП
А какие вопросы из теста Вы относите к этой категории? Постараемся сделать упор на них.
ответить
 generator11.09.2009 | 20:02:06
Видно что основную бурю вызвал вопрос "о птичках" , как по мне даже долго не думал, потому что : драконы не летают как птицы и не ползают как ящерицы (хотя каждый из нас никогда не видел драконов, но блин хоть кто то же видел хоть раз птицу!!) если это будет наследование то прийдется его наследовать от какого то конкретного типа птицы а это уже моветон, анологично и с ящерицами.

Так что как говорится в одном бородатом анекдоте : - Хорошо что коровы не летают!!
ответить
 komarik10.09.2009 | 10:34:33
ответить
 komarik10.09.2009 | 11:06:03
тесты не только проверяют знания, но и учат (когда не знаешь правильного ответа). а у вас получается, что на данную задачу единственный правильный ответ - множественное наследование. для неопытного человека, это будет как указанием на то, что в таких случаях всегда правильно использовать множественное наследование. У нас многие преподаватели, препадают ООП не понимая его. В результате, заканчивая ВУЗ, люди усердно пытаются забыть полученные "знания". Как по мне, данный вопрос дает такие же "знания", которые потом надо будет пытаться забыть.
ответить
 admin10.09.2009 | 22:18:43
Сервис создан именно для обучения. Поэтому мы и показываем правильные ответы и поэтому же была добавленна поддержка комментариев к вопросам.

У меня есть некоторый опыт в программировании и я делюсь своими знаниями насколько могу. Почему-то Вы мои аргументы не воспринимаете, или не хотите воспринимать.

Все же попытаюсь объяснить еще раз.
1. В вопросе необходимо указать наиболее точный вариант. Заметьте, тут не говорится "единственный вариант", а говорится "наиболее точный".
2. Предложенный Вами вариант с полями типа boolean далек от ООП. Кроме того, он никак не связан с композицией, что я Вам и пытался объяснить. Это просто свойства класса. Если же Вы хотите сделать отдельные класссы CanFly и CanCrawl - это тоже не композиция и является надуманным решением для данной конкретной задачи. Не говорю, что так сделать нельзя, просто исходя из своего опыта могу сказать, что это решение далеко не самое удачное.
ответить
 admin10.09.2009 | 22:24:18
3. Вот вариант, который мне кажется удачным, хотя бы потому, что он реализован именно по принципам ООП.
interface Flyable {
void fly();
}
interface Crawlable {
void crawl();
}
class Dragon implements Flyable, Crawlable {
public void fly { ... }
public void crawl { ... }
}
Что это нам дает? Например то, что мы можем работать с драконом через интерфейсы. И если у нас появится в программе птица:
class Bird implements Flyable { public void fly() { ... } }
то мы сможем полиморфно вызывать методы fly у птицы и у дракона через интерфейс Flyable.
Мне кажется, что с точки зрения ООП это хорошее решение.
ответить
 admin10.09.2009 | 19:21:11
Смотрел результаты - 10 людей выбрали множественное наследование, 3 - композицию, и 1 - почему-то инкапсуляцию. Полиморфизм не выбрал никто.
Чуть позже прокомментирую Ваше второе сообщение.
ответить
 apofig05.08.2009 | 11:26:32
Спасибо за тест. Этот прошел. Бага возникла тогда когда я привык выбирать один вариант радиобаттоном, а потом мне чекбоксики попались - ну я по привычке выбрал один единственный вариант (хотя надо было два). А что, если бы в вопросе было сказано "выберите несколько вариантов" когда чекбоксики, или "выберете один" - если радиобаттоны. Или вообще оставлять только чекбоксики везде - это сделает более сложным тест для прохождения тем, кто не знает ответа и пробует наугад. А?
ответить
 admin05.08.2009 | 11:33:38
Стараемся по возможности писать фразу "укажите все подходящие варианты" для вопросов со множественным выбором.
На счет того, чтобы сделать все варианты multi choice - идея хорошая. Но для тетосв по основам это будет слишком сложно - иногда лучше дать возможность человеку провести анализ и найти правильный ответ методом исключения.
ответить
 apofig05.08.2009 | 12:27:46
Согласен с "для тестов по основам это будет слишком сложно". Спасибо.
ответить
 Lance31.07.2009 | 09:20:02
спасибо за тест. честно лопухнулся на некоторых темах что заставило перечитать матчасть :)
пару замечаний/предложений:
- поскольку есть вопросы, относящиеся к паттернам, неплохо было бы переименовать тест и категорию, а то немного конфузно :)
- досадно, что выборка вопросов маленькая: при повторном прохождении вопросы пракически 100% повторились. улучшить ситуацию можно перефразировкой или легкой можификацией уже существующих вопросов. если что интересное придумаю -- обязательно предложу
ответить
 admin31.07.2009 | 09:31:25
А Вам спасибо за фидбек.
1. Мы собираемся скоро публиковать тест по паттернам проектирования (без привязки к конкретному языку программирования). Вопросы по паттернам будут перенесены туда. Кстати, можете проголосовать за интересующие Вас тесты на странице - http://www.quizful.net/TestConstructionAction.tests
2. Даже не знаю, как можно переименовать категорию, - ведь паттерны проектирования тоже относятся к ОО подходу.
3. Да, вопросов и правда маловато (всего 15 разных). Стараемся периодически пополнять тесты. Если сможете предложить вопросы для ООП или Паттернов проектирования, будем очень благодарны.
ответить
 ikkko08.07.2009 | 15:27:21
в общем отличный тест и сам сайт
ответить
 boder09.04.2009 | 18:42:55
Множественное наследование есть не у всех языках
ответить
 c0nst09.04.2009 | 18:55:45
Да, в некоторых языках множественное наследование не поддерживается как языковая конструкция. Но дело в том, что множественное наследование - одна из важных концепций ООП, а тест именно по ООП, а не по его реализации в некотором языке программирования.
ответить
Добавить комментарий