Форум программистов, компьютерный форум CyberForum.ru

Основы ООП - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Сумма ряда на С++ http://www.cyberforum.ru/cpp-beginners/thread955422.html
Здравствуйте,помогите пожалуйста с задачей: даны действительные x e и целые k n числа вычислить с точностью сумму и указать количество учтенных слагаемых .Считать что требуемая точность достигнута, если вычислена сумма нескольких первых слагаемых и очередное слагаемое оказалось по модулю меньше, чем Е ,-это и все последующие слагаемые можно не учитывать. вот я уже упростила свое выражение "...
C++ Найти минимальный по модулю вектор С++. Дан вектор, состоящий из 7 элементов целого типа. Найти минимальный по модулю элемент вектора. Ввод вывод потоковый. Помогите пожалуйста! http://www.cyberforum.ru/cpp-beginners/thread955403.html
C++ Как добавить программу в автозагрузку которой нужны администраторские права
Привет, как добавить программу в автозагрузку которой нужны администраторские права ?
Функция collate<char>::compare() C++
Здорова!!! Есть простая задачка для новичков: "Напишите функцию collate<char>::compare(), которая работает согласно словарному упорядочению. Сделайте это для языков, вроде французского или немецкого, в которых букв больше чем в английском." Я вообще не пойму что они хотят что бы мы тут сделали??? Ну кто может работающий прототип написать? Добавлено через 10 часов 41 минуту Ну что вы так...
C++ Как локальную переменную сделать глобально, при это сохранив накопленное в ней значение? http://www.cyberforum.ru/cpp-beginners/thread955383.html
Ребята, помогите, пожалуйста. Вот, например, есть такой код: for (int i=0; i<10; ++i) { /* здесь делается что-то полезное */ } std::cout << "Цикл закончился. i равно " << i;
C++ Найти длины биссектрис По заданным координатам вершин треугольника найти длины биссектрис этого треугольника. Не могу понять как найти длину биссектрисы, как применяется формула? И как будет выглядеть вообще решение задачи. подробнее

Показать сообщение отдельно
lemegeton
2917 / 1346 / 133
Регистрация: 29.11.2010
Сообщений: 2,720
16.09.2013, 15:30     Основы ООП
Цитата Сообщение от ALeXUI_1 Посмотреть сообщение
lemegeton, Т.е. мы наследуемся от интрефейса, и переопределяем его описанные виртуальные методы?
Да.

Цитата Сообщение от ALeXUI_1 Посмотреть сообщение
Ну а какой в этом смысл
Смысл -- описать и зафиксировать общее поведение для различных сущностей.

Цитата Сообщение от ALeXUI_1 Посмотреть сообщение
если мы будем переопредять, можно просто создать новый класс, и определить эти методы..
Тогда это будут разные сущности, без общего поведения.

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
#include <ctime>
#include <cstdlib>
#include <string>
#include <iostream>
#include <iomanip>
 
class Surface;
 
/**
 * Интерфейс объекта.
 * Общее поведение всех сущностей -- они умеют отрисовываться на поверхности.
 */
class Drawable {
 public:
  virtual void draw(Surface *surface) = 0;
  virtual ~Drawable() {}
};
 
/**
 * "Поверхность", умеющая отрисовывать примитивы и любые другие 
 * фигуры, наследующие интерфейс Drawable.
 */
class Surface {
 public:
  void drawPixel(int x, int y) {
    std::cout << "Pixel{x = " << x << ", y = " << y << "}" << std::endl;
  }
  void drawLine(int x1, int y1, int x2, int y2) {
    std::cout << "Line{x1 = " << x1 << ", y1 = " << y1 << ", " <<
      "x2 = " << x2 << ", y2 = " << y2 << "}" << std::endl;
  }
  void drawCircle(int x, int y, int radius) {
    std::cout << "Circle{x = " << x << ", y = " << y << 
      ", radius = " << radius <<
      "}" << std::endl;
  }
  // поверхность не может отрисовать любой случайный класс
  // ей подавай тип данных, о котором она что-то знает.
  void draw(Drawable *drawable) {
    drawable->draw(this);
  }
};
 
/**
 * Квадрат, умеющий отрисовываться на поверхности
 */
class Square : public Drawable {
 public:
  Square(int x, int y, int side) : x(x), y(y), side(side) {}
  virtual void draw(Surface *surface) {
    surface->drawLine(x, y, x + side, y);
    surface->drawLine(x, y, x, y + side);
    surface->drawLine(x + side, y, x + side, y + side);
    surface->drawLine(x, y + side, x + side, y + side);
  }
 private:
  int x, y, side;
};
 
/**
 * Окружность, умеющая отрисовываться на поверхности
 */
class Circle : public Drawable {
 public:
  Circle(int x, int y, int radius) : x(x), y(y), radius(radius) {}
  virtual void draw(Surface *surface) {
    surface->drawCircle(x, y, radius);
    surface->drawPixel(x, y);
  }
 private:
  int x, y, radius;
};
 
int main(int, char **)  {
  Surface surface;
  
  Drawable* drawables[] = {
    new Square(1, 1, 5),
    new Circle(1, 1, 5),
    new Square(1, 1, 5),
  };
  int numberOfDrawables = sizeof(drawables) / sizeof(drawables[0]);
  
  for (int i = 0; i < numberOfDrawables; ++i) {
    surface.draw(drawables[i]);
  }
 
  for (int i = 0; i < numberOfDrawables; ++i) {
    delete drawables[i];
  }
  return 0;
}
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru