12 / 12 / 7
Регистрация: 05.06.2012
Сообщений: 280
|
|
1 | |
ООП. Тестовое задание собеседования.06.09.2013, 17:47. Показов 9460. Ответов 17
Метки нет Все метки)
(
Это тестовое задание для устройста на работу. Я не совсем понимаю что от меня хотят. Не могли бы вы мне далее составить набросок плана дествий.
Зарание спасибо. Само задание С использованием языка C++ построить и на основе готовой модели предложить решение задачи Автомобили. 1. Управление автомобилем. 2. Поездка на автомобиле. 3. Повреждение автомобиля. 4. Выбор автомобиля для покупки. 5. Диагностика неисправленности и ремонт автомобиля. Требования к работе: 1. Выделение уровней абстракции в системе. 2. Выделение базовых сущностей предметной области. 3. Построение иерархии сущностей. 4. Отношения между сущностями. 5. Демонстрация инкапсуляции, наследования и полиморфизма в решениях задач. 6. Словесное обоснование решений, принятых при построении иерархии: a. Уровень абстракции, на которым зада решена. b. Какие сущности из иерархии использованы и с какой целью. c. Плюсы и минусы выбранного решения. d. Обоснование дополнительных архитектурных решений, если таковые были использованы для конкретной задачи. Результат должен быть оформлен в виде одного или нескольких файлов с кодом на C# или C++. Все комментарии и пояснения должны быть написаны непосредственно внутри данных файлов как комментарии к частям кода или общий комментарий в начале файлов. Код не обязан быть компилируемым и запускаемым.
0
|
|
06.09.2013, 17:47 | |
Ответы с готовыми решениями:
17
Тестовое задание Тестовое задание Тестовое задание на Junior C++ dev |
859 / 448 / 112
Регистрация: 06.07.2013
Сообщений: 1,491
|
|
06.09.2013, 18:31 | 2 |
тут, возможно, реализовать методы в классе автомобиль. с 4 видимо придется делать отдельную от класса функцию
тут соответственно требования к оформлению, и структурированию данных в объявлении класса/ов
1
|
Антикодер
1796 / 861 / 48
Регистрация: 15.09.2012
Сообщений: 3,071
|
|
09.09.2013, 00:06 | 6 |
я думаю при устройстве на работу нужно продемонстрировать не только полиморфизм, но ещё и умение комбинировать 4 стиля программирования, о которых идёт речь в книге Страуструпа.
Объектно-ориентированная программа для расчета арифметического выражения Чтоб продемонстрировать полиморфизм, надо правильно определить сущности предметной области, из которых часть(те сущности, которые имеют схожие интерфейсы) обобщить абстрактным классом. Скажем есть класс "летательные аппараты" - пусть будет абстрактным, у него есть виртуальный метод "подняться в воздух". Теперь создаём потомков - классы "вертолёты Ka-50" и "самолёты Су-27". у каждого класса-потомка есть собственная реализация метода "подняться в воздух", вертолёту надо начать вращение лопастями, и он поднимется. самолёту надо выехать на взлетную полосу, запустить двигатели, разогнаться до определенной скорости, перевести закрылки в нужное положение, и после взлёта убрать шасси. Теперь создаём экземпляры 3 вертолёта Ка-50 и 4 самолёта Су-27. Поступает команда поднять в воздух всю авиацию. и мы используя только указатель типа "летательные аппараты" на объекты производных классов поднимаем всех воздух. Не по теме: в такие моменты, когда я такое рассказываю, мне хочется написать стратегическую игрушку...
1
|
12 / 12 / 7
Регистрация: 05.06.2012
Сообщений: 280
|
|
16.10.2013, 13:46 [ТС] | 7 |
XRuZzz, так что, вся мощь полиморфизма, целый принцып ООП. Заключается в том что мы можем закинуть все вертолётики и самалётики в один контейнер, типа "летающий аппарат" а потом их всех разом поднять в воздух??? Что то я не чувствую силы данного принцыпа.
Вот наследование например понятно всё, мы можем целые тонный кода наследованных друг за другом просто вызывать одной строкой. Инкапсуляция тоже круто, мы скрываем в этих кодах то что нам не нужно. А тут, полиморфизм, не могу понять((((( Добавлено через 3 минуты в Qt например собитей отрисовки на виджете реализовано виртуальной функцией. Но зачем??? непонятно((((
0
|
:)
![]() 4773 / 3267 / 497
Регистрация: 19.02.2013
Сообщений: 9,046
|
|
16.10.2013, 13:57 | 8 |
Есть базовый класс с неким интерфейсом.
Есть много разных наследников, реализующий этот интерфейс. При полиморфном поведении, Вы не задумываетесь с каким конкретно типом наследника приходится работать, т.к. всё взаимодействие осуществляется через интерфейс (базовый класс). При таком раскладе достаточно просто добавлять новые конкретные классы, не меняя при этом правило обработки этих классов. Т.к. интерфейс не изменяется. В общем, на любой вики можно об этом почитать.
1
|
Антикодер
1796 / 861 / 48
Регистрация: 15.09.2012
Сообщений: 3,071
|
|||||||||||||||||||||||||||||||
16.10.2013, 16:24 | 9 | ||||||||||||||||||||||||||||||
![]() Решение
можно ещё привести такой пример.
нам практически всегда в больших приложениях нужно работать с СУБД. Например нужно одновременно поддерживать работу с MySQL и SQLite на древнем стиле программирования это выглядело так
во втором случае нам не нужно портить работающий код, достаточно добавить реализацию класса
Эти объекты можно подписывать(отписывать) на оповещение при этом логика механизма остаётся простой. если продолжить тему летательных аппаратов: При взлёте каждый летальный аппарат подписывается(при посадке отписывается) на сообщение о приближении шторма. Не взлетевшие аппараты тоже существуют в оперативной памяти, но им не зачем знать о шторме. таким образом мы можем с помощью базового класса "летательный аппарат" оповестить всех кто в воздухе о шторме. Поведение летательных аппаратов в воздухе, после получения сообщения, должно измениться. В данном смысле полиморфный класс "летательный аппарат" означает "принимающий формы разных летательных аппаратов" Полиморфизм приводит к тому, что программные модули(например классы) становятся независимыми и их легче модифицировать в больших проектах. вероятность повторного использования кода увеличивается. Проблема только в том, что когда большой проект начинается вы не можете знать "истинную архитектуру" приложения. И классы начинают кочевать по проекту, меняя свои имена и сущности ![]()
4
|
98 / 34 / 10
Регистрация: 24.04.2012
Сообщений: 151
|
|
16.10.2013, 16:33 | 10 |
сообщите пожалуйста о успехах и решениях
0
|
12 / 12 / 7
Регистрация: 05.06.2012
Сообщений: 280
|
|
16.10.2013, 16:36 [ТС] | 11 |
![]() Решение
Из баша)))
ххх:объясни мне пожалуйста доступным языком полиморфизм ууу:короч смотри ууу:у тебя есть класс коржик, от которого наследуются классы пирожено и морожено ууу:у коржика есть метод схавать ууу:но в пирожене он имплементируется как пожевать с чаем, а в морожене - полызькать ууу:и вот у тебя пакет для коржиков. И ты туда наложила в перемешку пироженые и мороженые и тебе пофиг что ты от туда достанеш, ты вызываеш метод схавать. а уже реализация вызовется автоматом в зависимости от того что достанешь ууу:вот это полиморфизм
3
|
XRuZzz
|
16.10.2013, 16:42
#12
|
Не по теме: получается мороженые и пироженые будут хавать сами себя :)
0
|
98 / 34 / 10
Регистрация: 24.04.2012
Сообщений: 151
|
|
17.10.2013, 14:54 | 14 |
если можно подробней о собеседовании, заданиях, вопросах, требованиях. просто тема актуальная, и ни малейшего представления нет, хотелось бы поосновательней поготовится. заранее спасибо.
0
|
12 / 12 / 7
Регистрация: 05.06.2012
Сообщений: 280
|
|
17.10.2013, 14:56 [ТС] | 15 |
XRuZzz, большое спасибо за пример с базами и штормом, очень помоголо. Не могли бы вы мне ещё поставить задачу какую небудь простенькую, что б я прокачался в этом + задействовал флаги, типо шторма в ващем примерею. ну или хотяб кусочак кода накинуть.
0
|
Антикодер
1796 / 861 / 48
Регистрация: 15.09.2012
Сообщений: 3,071
|
|
17.10.2013, 15:41 | 16 |
надо было в статью оформить, просто изначально не думал много писать.
мне лично помог разобраться пример MVC в примере на С++ (консольное приложение) Для тренировке можно реализовать сам паттерн MVC(который включает в себя паттерн Наблюдатель). Либо написать код к моему рассказу про летательные аппараты. Это может быть консольное(текстовое) приложение, но мне лично было бы интересно делать это в графике. Либо не терять время на мои задачки, и читать Страуструпа(можно конечно кого нить другого почитать, но Страуструпа игнорировать опасно ![]()
1
|
12 / 12 / 7
Регистрация: 05.06.2012
Сообщений: 280
|
|
17.10.2013, 15:42 [ТС] | 17 |
Alexxx7, Ну я начну с того что я из Беларуси. ИТ сфера у нас более мение развита, в конце концов танки мы сделали(кстати они ща тоже набират программистов(WarGamming), ещё крупные филлиалы Epam, BelHard. Кучи частников. Ну короче есть куда ринуться.
План действий у меня таков: Создаешь резюме на таких сайтах как rabota.by, jobs.org, ВавяПупкинНайдиРаботу.com и так далее.. Чем больше твоих резюме вист в нете тем лучше. И кстати лучше чуть при уменьшить свои способности, чем преувеличить, ибо они всё равно тебя тогда отсеют на собеседовании. Ещё я создал копию такого же резюме в вордовском формате. Ибо часто просят прислать на почту. Далее два варианта Первый сидеть и ждать)))) ну ещё на до поддерживать актуальность своих резюме(апать так сказать, кто занимался барыжничеством в инете тот поймёт). Ну и все. Тебе время от времени будут звонить рекрутеры(в зависимотсти от крутости твоего резюме, чем круче тем чаше) приглашать на собеседование, рассказывать о компании. Иногда сразу понятно вы друг другу не подходите. Но я, например всё ровно хожу на них))) посмотреть, как да что устроено, как кто работает. Второй это можно ещё искать вакансии на этих же сайтах и нажимать кнопу типо "Хочу у вас работать", тогда будет больше приглашений(но кстати не намного). На счет тестовых заданий тут угадать очень сложно, кто-то даёт такую полную абстракцию, что указана выше, кто просит написать функций реверса строки или оптимизировать участок кода. Единственное, что можно точно сказать, так это то что всем надо что б у тебя были сильные знания самого языка. Например если компания ищет разработчика игр С++, и в вакансии компании указано работать с DirectX то тебя по нему сто пудова спрашивать сильно не будут, им главное что бы ты был с мозгами и знал язык( а лучше несколько). А на DirectX они уже сами тебя поднатоскают.Ну вот вроде бы и всё.
1
|
XRuZzz
|
|||||
17.10.2013, 16:14
ООП. Тестовое задание собеседования.
#18
|
|||||
Не по теме: вот мне интересно можно ли(рационально ли) с такой же легкостью сделать поддержку Redis
0
|
17.10.2013, 16:14 | |
Тестовое задание для трудоустройства
Написать ответы на тестовое задание при приёме на работу (исключения, sizeof, mutex) Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |