2014 dxdy logo

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

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




Начать новую тему Ответить на тему
 
 Поделитесь задачами !
Сообщение16.11.2013, 00:23 


26/10/13
42
Я начал изучать принципы ООП (теорию), но не могу найти хороших задач, для закрепления темы. Пожалуйста, поделитесь интересными задачками, которые вы знаете, рассчитанные на уровень начального освоения ООП .

 Профиль  
                  
 
 Re: Поделитесь задачами !
Сообщение16.11.2013, 04:50 
Аватара пользователя


20/10/12
308
ООП - это метод разработки программ, который показывает свои преимущества только для достаточно больших прректов. Трудно придумать олимпиадную задачу в которой ООП экономило бы время написания или исполнения.

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

 Профиль  
                  
 
 Re: Поделитесь задачами !
Сообщение16.11.2013, 07:41 
Аватара пользователя


31/10/08
1244
Как уже сказали задачи тут большие. Оконный интерфейс. Векторный редактор. Дерево AST.
Инкапсуляция вообще используется при смени версий.

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

 Профиль  
                  
 
 Re: Поделитесь задачами !
Сообщение16.11.2013, 15:12 


26/10/13
42
Да, я понимаю, что ООП для работы с большими проектами. Но, я видел примеры задач с собеседований, призванные проверить знание принципов ООП соискателем. Как-то: необходимо создать класс работников, с полями имен/фамилий/годов рождения и тд., с методами начисления зарплаты, увольнения, повышения и прочее. Ну а затем выводить самых успешных работников, повышать их, увольнять тех, кто не выполнил план и тд. Т.е задачка по сути небольшая. Да, принципы ООП проявятся не во всей красе, но закрепить знания можно было бы. Именно про такие примеры я Вас и спрашиваю

 Профиль  
                  
 
 Re: Поделитесь задачами !
Сообщение17.11.2013, 17:37 
Заслуженный участник


27/04/09
28128
Если вам нужны задачи с небольшой длиной задания, то вот:
    напишите компилятор из Python 2.7.6 в текущий JavaScript. :roll:

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

 Профиль  
                  
 
 Re: Поделитесь задачами !
Сообщение17.11.2013, 18:07 
Заслуженный участник


28/04/09
1933
Это, конечно, не совсем то, что требуется, но у Г. Буча в "Объектно-ориентированном анализе и проектировании..." есть ряд примеров (правда, немаленьких) приложений, которые используют ОО подход.

 Профиль  
                  
 
 Re: Поделитесь задачами !
Сообщение18.11.2013, 05:02 


24/05/09

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

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

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

 Профиль  
                  
 
 Re: Поделитесь задачами !
Сообщение18.11.2013, 07:47 
Заслуженный участник


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

 Профиль  
                  
 
 Re: Поделитесь задачами !
Сообщение18.11.2013, 12:26 
Аватара пользователя


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

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

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

 Профиль  
                  
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 9 ] 

Модераторы: Karan, Toucan, PAV, maxal, Супермодераторы



Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей


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

Найти:
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group