Я не могу представить, что может существовать стандартный набор упражнений, который естественным образом познакомил бы всех с объектно-ориентированными функциями языка программирования. Многие вводные OO-руководства полны Животных
, Кошек
и Собак
, что, по крайней мере, для меня не подходит. Найдите проблемную область в объектно-ориентированном стиле, с которой вы много боретесь, и попробуйте использовать ее в качестве набора стандартных упражнений для каждого изучаемого вами языка.
ОО-конструкции, которые мы привыкли мыслить терминами, могут не иметь смысла в языке. На ум приходит Javascript, который потрясает все наши представления об объектах в целом. Тем не менее, вам не следует адаптироваться к языку, а лучше адаптировать его для своих целей. Со временем, когда ваш репозиторий знаний будет расти и совершенствоваться с опытом, вы, естественно, захотите реализовать то, что вы считаете лучшим, на каждом используемом вами языке программирования, независимо от того, что он предлагает.
Немного забавного: реализуйте иерархию Форма / Круг / Эллипс, не попадая в ловушку (это прекрасно может быть сделано в Java, Scala и т. Д.).
править реализовать это до , глядя на предлагаемые решения в статье Википедии :)
Вот что я использую:
http://homepage.mac.com/s_lott/books/oodesign.html
Я делал это достаточно много раз, чтобы это стало "стандартом" по моему мнению.
Я использовал Hunt The Wumpus. Оригинальная реализация в BASIC вовсе не была ОО, но если вы начнете все сначала, она довольно хорошо подходит для этого.
Возможно, это слишком специфично, но именно это я считаю своей заслугой в том, что лично я начал понимать ООП. По работе мне нужно было написать код для извлечения данных из большого количества различных источников. В то время мне казалось очевидным, что я должен решать проблему с точки зрения разработки различных классов "DataProvider". Лишь постепенно стало ясно, как много кода я могу повторно использовать, разбив различные виды провайдеров на иерархические категории, например, так:
... и так далее. Я бы предположил, что любая проблема, подобная этой - где вам нужно выполнить определенный вид задачи (в моем случае, извлечение данных) кучей различных способов (например, из нескольких источников) - будет отличной возможностью углубиться в ООП и, надеюсь, научиться ценить его полезность.
Я лично считаю, что лучший способ изучить ООП - это написать свой собственный фреймворк для тестирования.
Я считаю, что схема Test Runner, владеющего одним или несколькими наборами тестов, каждый из которых имеет свои собственные тестовые случаи, является достаточной отправной точкой, но вы можете легко развить ее оттуда, и это может даже стать чем-то, что вы захотите использовать в будущем.
В качестве альтернативы, если вы хотите что-то совершенно бросовое, всегда есть Enterprise FizzBuzz. :)
.Хороший вопрос ... На мой взгляд, лучший учитель - просто найти простой пример объектно-ориентированных функций и попытаться написать что-нибудь самостоятельно, создав новые примеры для себя и попытаться разработать простое приложение, в котором Вы можете подключиться все возможности OO.
Реализация такого алгоритма, как сортировка слиянием, без использования объектно-ориентированной функции, поскольку она им не нужна, бесполезна. Попробуйте настоящие полезные программы.
Я помню, что при изучении объектно-ориентированного программирования я писал приложение с общим интерфейсом "Animal" с методами и классом, которые его наследуют, например "амфибия". это было фантастическое время;)