Підшивки / Статті GarfieldUA / OOP - Портал об’єктно-орієнтованого програмування Подорожуй з gofrie.com

Створення інтерактивних навчальних матеріалів з об'єктно-орієнтованого програмування

Кваліфікаційна робота на тему: “Створення інтерактивних навчальних матеріалів з об'єктно-орієнтованого програмування”

Завантажити
Автор: Івченко Дмитро

Особливості розробки електронних порталів для підтримки навчання осіб з обмеженими можливостями

Кваліфікаційна робота на тему: “Особливості розробки електронних порталів для підтримки навчання осіб з обмеженими можливостями”

Завантажити
Автор: Гайдучек Іван

Electronic Portfolio development in e-Learning systems

Кваліфікаційна робота на тему: “Electronic Portfolio development in e-Learning systems”

Завантажити
Автор: Yuliya Bozhko

Методи і засоби підтримки автоматизованих практикумів з об'єктно-орієнтованого програмування

Кваліфікаційна робота на тему: “Методи і засоби підтримки автоматизованих практикумів з об'єктно-орієнтованого програмування”

Завантажити
Автор: Болгар Ліанна Едуардівна

Задача: Комплексні числа (алгебраїчна і тригометрична форми)

Реалізувати два варіанти класу комплексних чисел за доданими специфікаціями:
УВАГА! Період тригонометричних чисел має округлюватися до 2*PI

#include <iostream>
#include <cmath>
using namespace std;

const double PI = 3.141592653589793238462643383279;

class AComplex;
class TComplex
{
private:
	double _ro, _phi;
	// Зведення по модулю 2PI
	void normalizePhi();

public:
	TComplex (const double& ro=0, const double& phi=0);
	TComplex (const TComplex&);
	TComplex (const AComplex&);
	~TComplex();

	TComplex& operator= (const TComplex&);

	double& mod();
	double& arg();

	const double& mod() const;
	const double& arg() const;

	const double re() const;
	const double im() const;
};

TComplex& operator+=(TComplex&, const TComplex&);
TComplex& operator-=(TComplex&, const TComplex&);
TComplex& operator*=(TComplex&, const TComplex&);
TComplex& operator/=(TComplex&, const TComplex&);

const TComplex operator* (const TComplex&, const TComplex&);
const TComplex operator/ (const TComplex&, const TComplex&);

class TComplex;
class AComplex
{
private:
	double _re, _im;

public:
	AComplex (const double& re=0, const double& im=0);
	AComplex (const TComplex&);
	AComplex (const AComplex&);
	~AComplex();

	AComplex& operator= (const AComplex&);

	double& re();
	double& im();

	const double& re(void) const;
	const double& im(void) const;

	const double mod() const;
	const double arg() const;

	// Спряжене до комплексного числа
	const AComplex conj() const;
};

AComplex& operator+=(AComplex&, const AComplex&);
AComplex& operator-=(AComplex&, const AComplex&);
AComplex& operator*=(AComplex&, const AComplex&);
AComplex& operator/=(AComplex&, const AComplex&);

const bool operator==(const AComplex &, const AComplex &);
const bool operator!=(const AComplex &, const AComplex &);

const AComplex operator+ (const AComplex&, const AComplex&);
const AComplex operator- (const AComplex&, const AComplex&);

Задача: Трикутники

Реалізувати клас трикутників за зразком сигнатури:

Вивід трикутників ABC у вигляді (1;2)(1;2)(3;5), де A, B, C — відповідні точки.

#include <iostream>
using namespace std;

class Point
{
private:
	double _x;
	double _y;

public:
	Point (const double &x = 0, const double &y = 0);
	Point (const Point &);
	~Point();
	Point &operator=(const Point &);
	double &x();
	double &y();
	const double &x()const;
	const double &y()const;
	const double distance(const Point &p) const;
};

ostream &operator<<(ostream&, const Point &);
const Point operator+ (const Point &, const Point &);
Point &operator+=(Point &, const Point &);
const Point operator- (const Point &, const Point &);
Point &operator-=(Point &, const Point &);
const bool operator==(const Point &, const Point &);
const bool operator!=(const Point &, const Point &);

class Triangle
{
public:
	// Segment of triangle
	class Segment 
	{
	private:
		// Assignment is forbidden in this implementation
		Segment &operator=(const Segment &);
		const Point &_a;
		const Point &_b;

	public:
		Segment(const Point &start, const Point &end);
		Segment(const Segment &);
		~Segment();

		const Point &start() const;
		const Point &end() const;

		const double length() const;
                // Найближча відстань від точки до відрізка
		const Point nearest(const Point &) const;
	};

	Triangle(const double &x1=0, const double &y1=0,
	         const double &x2=1, const double &y2=0,
		 const double &x3=0, const double &y3=1);
	Triangle(const Point &a, const Point &b, const Point &c);
	Triangle(const Point &a, const Segment &side);
	Triangle (const Triangle &);
	~Triangle();
	Triangle &operator=(const Triangle &);

	const double perimeter() const;
	const double area() const;

	const Point &apexA() const;
	const Point &apexB() const;
	const Point &apexC() const;

	const Segment &side_a() const;
	const Segment &side_b() const;
	const Segment &side_c() const;

	const double length_a() const;
	const double length_b() const;
	const double length_c() const;

	const Segment &height_a() const;
	const Segment &height_b() const;
	const Segment &height_c() const;

private:
        Point _a, _b, _c;
};

Задача: Загорнутий вектор, пошук за ключем

Загорнутий вектор v, складений із записів довільного невідомого наперед типу. Записи містять в собі числові ключі. Визначте структури та запрограмуйте функцію пошуку запису із заданим значенням ключа a.

Вивід має бути наступним:
1) Якщо елемент був знайдений (за ключем лежить число 5) 1:5, де 1 — це результат пошуку бульової функції find
2) Якщо елемент не було знайдено, то має виводитися тільки результат пошуку бульової функції find — 0

David Abrahams, Aleksey Gurtovoy. C++ Template Metaprogramming: Concepts, Tools, and Techniques from Boost and Beyond



«C++ Template Metaprogramming» sheds light on the most powerful idioms of today's C++, at long last delivering practical metaprogramming tools and techniques into the hands of the everyday programmer.
Since the introduction of templates, C++ programmers have discovered surprising and powerful ways to perform computation at compile-time. While the excitement generated by these capabilities among C++ experts has reached the community at large, their practical application remains out-of-reach for many programmers. Literature on C++ template metaprogramming has focused primarily on details of low-level «tricks» at the expense of strong idioms and abstractions, and without illuminating the path from metaprogramming to expressive interfaces and efficient, maintainable software.

This book delivers both «big picture» ideas and practical tools. It explains what metaprogramming is, why it matters, and how the unique combination of features in C++ make it an especially powerful language for metaprogramming. It also presents the Boost Metaprogramming Library, a powerful open source framework of high-level compile-time components based on familiar STL idioms, which makes C++ metaprogramming easy, expressive, and fun.

Бьярн Страуструп. Принципы и практика использования C++



Дана книга являє собою вступний курс програмування, написаний автором мови С++.

Автор книги вважає, що читачі зрештою почнуть писати нетривіальні програми або в якості професійних розробників програмного забезпечення, або в якості програмістів, які працюють в інших галузях науки і техніки. Основні концепції і методи програмування в книзі викладаються глибше, ніж це прийнято в традиційних вступних курсах. Це дозволить читачам розробляти корисні, правильні, зрозумілі і ефективні програми. Книга являє собою введення в програмування взагалі, включаючи об'єктно-орієнтоване і узагальнене програмування. Вона також являє собою прекрасне введення в мову С++, один з найбільш популярних мов програмування в сучасному світі. У книзі описані сучасні методи програмування на С++, включаючи стандартну бібліотеку, що дозволяє спростити програмування.

Книга призначена в основному для людей, які ніколи раніше не програмували. Вона випробувана більш ніж тисячею студентів університету. Проте досвідчені програмісти і студенти, вже вивчили основи програмування, також знайдуть в книзі багато корисної інформації, яка дозволить їм перейти на більш високий рівень майстерності.

Перша половина книги охоплює широкий спектр основних понять, методів проектування і програмування, властивостей мови С++ і його бібліотек. Це дозволить читачам писати програми, виконують введення і виведення даних, обчислення і побудова простих графічних зображень. У другій половині розглядаються більш спеціалізовані теми, такі як обробка тексту і тестування. У ній міститься багато довідкового матеріалу. Вихідні коди і інші додатки читачі можуть знайти на веб-сайті автора.

Брюс Эккель. Философия С++. Введение в стандартный С++



У книзі «Философия С++. Введение в стандартный С++» послідовно і методично викладаються питання використання об'єктно-орієнтованого підходу до створення програм. Автор не просто описує різні проблеми і способи їх вирішення, він розкриває перед читачем особливий спосіб мислення, не володіючи яким неможливо комфортно почувати себе в об'єктно-орієнтованої середовищі.

Це одна з тих книг, які обов'язково повинен прочитати кожен, хто всерйоз займається розробкою програмного забезпечення в C++.

Стенли Б. Липпман. Язык программирования C++. Вводный курс



Нинішнє (4-e) видання такого популярного вступного курсу стандартної мови C++ було повністю перероблено, реорганізовано і переписано так, щоб допомогти швидше і ефективніше навчитися програмувати на цій мові. У міру розвитку мови C++, автор намагається вносити в подальші видання відповідні зміни. Тепер стандартна бібліотека C++ описана з самого початку, що дозволяє читачеві відразу приступити до створення працездатних програм ще до вивчення подробиць мови.
Тут містяться корисні поради, які допоможуть полегшити створення програм, а також підвищити їх ефективність. Приклади, в яких використовуються можливості бібліотек, дозволяють продемонструвати переваги мови C++, а також найбільш ефективні прийоми його застосування. Як і в попередніх виданнях, тут обговорюються фундаментальні концепції і методи мови C++, що робить книгу найціннішим ресурсом навіть для досвідчених програмістів.

Варто зауважити, що 5-е видання вже є у продажу, щоправда поки що тільки англійською мовою.

Angelika Langer. Standard C++ IOStreams and Locales: Advanced Programmer's Guide and Reference



IOStreams та Locales є двома з найбільш важливих, довгоочікуваних стандартів ISO/ANSI C++ і це перша книга, в якій йдеться тільки про них і матеріал розкривається найбільш повно. Автори пояснюють, які задачі IOStreams та Locales можуть вирішити. Після цього, читачу представляється широкий спектр прикладів і методів — від простих до складних.
Автори наводять концепції, архітектуру компонентів і приклади практичного застосування паттернів.

Книга включає:

  • пояснення ключових відмінностей між стандартним IOStreams та нестандартними версіями, що йому передували;
  • як розширити Locales для ефективної локалізації

У книзі також наведено повний опис можливостей класів IOStreams.
Дана книга буде корисною не тільки професіоналам, оскільки може слугувати чудовим довідником.

Anthony Williams. C++ Concurrency in Action: Practical Multithreading



C++ Concurrency in Action: Practical Multithreading — це ваш путівник по новому стандарту C++11 для досвідчених програмістів С++, а також тих, хто ніколи не писав багатопотокового коду. Ця книга продемонструє вам, як правильно і ефективно писати надійні багатопотокові програми в C++, уникаючи при цьому багатьох поширених помилок.

У книжці ви знайдете:

  • Приклади з застосуванням найновішого стандарту C++11
  • Програмування для багатьох ядер та процессорів
  • Невеликі приклади для навчання, великі приклади для практичного застосування

Дэвид Вандевурд, Николай Джосаттис. Шаблоны C++. Справочник разработчика



Шаблони C++ є частиною мови програмування, що надає програмісту нові можливості швидкої розробки ефективних і надійних програм і повторного використання коду. Дана книга, написана у співавторстві теоретиком C++ і програмістом-практиком з великим досвідом, вдало поєднує строгість викладу і повноту висвітлення теми з питань практичного використання шаблонів. У книзі міститься маса різноманітного матеріалу, що стосується програмування з використанням шаблонів, в тому числі матеріали, що дозволять досвідченим програмістам подолати сучасні обмеження в цій області.

Книга передбачає наявність у читача досить глибоких знань мови C++, проте стиль викладу забезпечує доступність матеріалу як для кваліфікованих фахівців, так і для програмістів середнього рівня.

Герб Саттер. Новые сложные задачи на C++



Дана книга являє собою продовження книги "Решение сложных задач на C++". У формі задач і їх рішень розглядаються сучасні методи проектування і програмування на C++. У книзі сконцентрований багаторічний досвід програмування на C++ не тільки автора, а й усього співтовариства програмістів на C++, тому деякі рекомендації автора можуть здатися несподіваними навіть досвідченим програмістам-професіоналам. Автор розглядає і конкретні методики, прийоми і ідіоми програмування, однак основна тема книги — це стиль програмування, причому в найширшому розумінні цього слова. Особливу увагу у всіх завданнях книги приділено питанню проектування, яке має забезпечити максимальну надійність, безпеку, продуктивність і найбільш ефективний супровід створюваного програмного забезпечення.

Книга розрахована в першу чергу на професійних програмістів з глибокими знаннями мови, однак вона буде корисна будь-якому, хто захоче поглибити свої знання в даній області.