2014 dxdy logo

Научный форум dxdy

Математика, Физика, Computer Science, Machine Learning, LaTeX, Механика и Техника, Химия,
Биология и Медицина, Экономика и Финансовая Математика, Гуманитарные науки




 
 Поделитесь задачами !
Сообщение16.11.2013, 00:23 
Я начал изучать принципы ООП (теорию), но не могу найти хороших задач, для закрепления темы. Пожалуйста, поделитесь интересными задачками, которые вы знаете, рассчитанные на уровень начального освоения ООП .

 
 
 
 Re: Поделитесь задачами !
Сообщение16.11.2013, 04:50 
Аватара пользователя
ООП - это метод разработки программ, который показывает свои преимущества только для достаточно больших прректов. Трудно придумать олимпиадную задачу в которой ООП экономило бы время написания или исполнения.

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

 
 
 
 Re: Поделитесь задачами !
Сообщение16.11.2013, 07:41 
Аватара пользователя
Как уже сказали задачи тут большие. Оконный интерфейс. Векторный редактор. Дерево AST.
Инкапсуляция вообще используется при смени версий.

Почитай книгу "Совершенный код". Для меня она открыла глаза для чего нужно ООП и как его правильно использовать. Жалко что там задач нет, только примеры. Но они короткие. Правда в части ООП книга касаеться только одного аспекта - сокрытия.

 
 
 
 Re: Поделитесь задачами !
Сообщение16.11.2013, 15:12 
Да, я понимаю, что ООП для работы с большими проектами. Но, я видел примеры задач с собеседований, призванные проверить знание принципов ООП соискателем. Как-то: необходимо создать класс работников, с полями имен/фамилий/годов рождения и тд., с методами начисления зарплаты, увольнения, повышения и прочее. Ну а затем выводить самых успешных работников, повышать их, увольнять тех, кто не выполнил план и тд. Т.е задачка по сути небольшая. Да, принципы ООП проявятся не во всей красе, но закрепить знания можно было бы. Именно про такие примеры я Вас и спрашиваю

 
 
 
 Re: Поделитесь задачами !
Сообщение17.11.2013, 17:37 
Если вам нужны задачи с небольшой длиной задания, то вот:
    напишите компилятор из Python 2.7.6 в текущий JavaScript. :roll:

Коротко, ясно, а сколько мороки!

 
 
 
 Re: Поделитесь задачами !
Сообщение17.11.2013, 18:07 
Это, конечно, не совсем то, что требуется, но у Г. Буча в "Объектно-ориентированном анализе и проектировании..." есть ряд примеров (правда, немаленьких) приложений, которые используют ОО подход.

 
 
 
 Re: Поделитесь задачами !
Сообщение18.11.2013, 05:02 
LexiBender в сообщении #789278 писал(а):
Как-то: необходимо создать класс работников, с полями имен/фамилий/годов рождения и тд., с методами начисления зарплаты, увольнения, повышения и прочее. Ну а затем выводить самых успешных работников, повышать их, увольнять тех, кто не выполнил план и тд.

Воот именно. Класс студенты, с полями имен/фамилий/годов рождения, курс, семестр, успеваемость, и так далее. Класс клиенты банка, дебет, кредит, баланс, пополнение счёта, снятие денег...

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

 
 
 
 Re: Поделитесь задачами !
Сообщение18.11.2013, 07:47 
Sphinx Pinastri в сообщении #789177 писал(а):
ООП - это метод разработки программ, который показывает свои преимущества только для достаточно больших прректов. Трудно придумать олимпиадную задачу в которой ООП экономило бы время написания или исполнения.
ООП - это еще один способ поделить программу на логические модули. А отдельные логические модули можно сделать и в небольшом проекте.
К тому же автор не просил задачу, на которой ООП сэкономит время написания, он просил задачу на закрепление материала ;)
Разбирался бы я в этом чуть лучше, может, и подкинул бы что-то.

 
 
 
 Re: Поделитесь задачами !
Сообщение18.11.2013, 12:26 
Аватара пользователя
rockclimber
В играх любят подход ООП.
1)
К примеру разработать базовый класс unit(воен) на его основе породить дочерние классы. Мобильный воен, летающий воин, пеший воин. И сделать 3 интерфейса: воин людской расы, воин эльфиской расы, воен инопланетной расы.
В результате породить 9 дочерних классов разных рас и войнов.
2)
Сделать класс автомобиля. С учётом комбинаций, различных: моторов, шин, каркасов и тп.

3) Сделать класс для чтения и записи звукового файла. С кодеком PCM. На основе wav продемонстрировать возможности инкапсуляции добавив поддержку wav64.
Учесть, что файл в формате *.wav может иметь разные структуры данных - т.е наличия разные кодеки. Продемонстрировать возможность легкого добавления новых кодеков в систему. Для этого сделать декодирования и кодирования структуры MP3 c использование библиотеке Lame.

4) Про длинные числа уже писали можно ещё линейную алгебру сделать. Сделать класс матрицы или тензора. Сделалать несколько реализаций вычисления детерминанты и обращений матрицы. Или для тензеров можно сделать несколько вариантов умножения.

 
 
 [ Сообщений: 9 ] 


Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group