Задачник

Практические задачи по ООП

Как вы уже знаете данный ресурс посвящённ изучению ООП, здесь полностью представлена теоретическая часть, но я могу быть полностью уверенным, что бы освоить все азы ООП нужно много практики, тут я предоставляю задачи и задачники по всем рассматриваемым языкам на данном ресурсе.

Общие задачи по ООП:

Решаются на любом языке

1) Класс Дробное число со знаком (Fractions). Число должно быть представлено двумя полями: целая часть - длинное целое со знаком, дробная часть - беззнаковое короткое целое. Реализовать арифметические операции сложения, вычитания, умножения и операции сравнения. В функции main проверить эти методы.

2) Класс Деньги для работы с денежными суммами. Число должно быть представлено двумя полями: типа long для рублей и типа unsigned char - для копеек. Дробная часть (копейки) при выводе на экран должна быть отделена от целой части запятой. Реализовать сложение, вычитание, деление сумм, деление суммы на дробное число, умножение на дробное число и операции сравнения. В функции main проверить эти методы.

3) Класс Равнобочная трапеция, члены класса: координаты 4-х точек. Предусмотреть в классе конструктор и методы: проверка, является ли фигура равнобочной трапецией; вычисления и вывода сведений о фигуре: длины сторон, периметр, площадь. В функции main продемонстрировать работу с классом: дано N трапеций, найти количество трапеций, у которых площадь больше средней площади.

4)Описать базовый класс Строка. Обязательные поля класса:

указатель pChar хранит адрес динамически выделенной памяти для размещения символов строки;
значение типа word хранит длину строки в байтах.
Реализовать обязательные методы следующего назначения:
-конструктор без параметров;
-конструктор, принимающий в качестве параметра строковый литерал; п конструктор, принимающий в качестве параметра символ;
-метод получения длины строки;
-метод очистки строки (делает строку пустой);
-деструктор.

Описать производный от Строка класс Комплексное число.

Строки данного класса должны состоять |из двух полей разделочных символом i. Первое поле задает значение действительной части числа, а второе - значение мнимой. Каждое из полей может содержать только символы десятичных цифр и символы - и +, определяющие знак числа. Символы - или + могут находиться только в первой позиции числа, причем символ + может отсутствовать, в этом случае число считается положительным. Если в составе инициализирующей строки будет встречен любой символ, отличный от допустимых, объект класса Комплексное число должен принимать нулевое значение. Примеры строк: 33il2, -7U00, +5i-21.

Для класса Комплексное_число определить следующие методы:
-проверка на равенство;
-сложение чисел;
-умножение чисел.
Написать тестовую программу, которая демонстрирует работу методов базового и производного классов.

5) Описать шаблонный класс List для работы с однонаправленными списками в динамической памяти.

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

Продемонстрировать работу с шаблонным классом для списка с целыми элементами и с элементами-строками.

Задачник по ООП в С++

C++ ООП Задачи и упражнения (В.В Лаптев, А.В Морозов, А.В. Бокова) 2007

Эл.Вариант книги

Задачи по ООП в Java

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

статья в википедии

Задачи по ООП в PHP

ООП в скриптовых языках(РНР, Ruby) несколько сложнее в понимании, по этому я смею предложить поправктиковаться в java или C. Но если за вами больой опыт в скриптовых языках, то не бойтесь.

avolberg.ru

Задачник по ООП в Ruby

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

Викиучебник