Содержание
- 2. Постановка проблемы: класс Window Бывает, что класс можно считать потомком различных базовых классов Окно Window используется
- 3. Схема наследования класс Window класс Display_object класс Display_medium
- 4. Класс Display_object class Display_object { public: virtual void move( const Point& new_location )=0; virtual Point location(
- 5. Использование Display_object void bounce( Display_object& d ) { Point at = d.location(); Point up = at
- 6. Класс Display_medium class Display_medium { public: virtual Point size( ) const = 0; virtual Point cursor(
- 7. Класс Window class Window : public Display_medium, Display_object { public: Window( const Point& upleft, const Point&
- 8. Класс Window (продолжение) int move_cursor( const Point& where ); Point cursor( ) const; Display_char character( )
- 9. Инвариант абстракции действия location( ) - чистый виртуальный метод класса Display_object Нет реализации, но есть спецификация,
- 10. Методы move() и location() void Window :: move ( const Point& new_location ) { _upper_left =
- 11. Использование объектов Window void say_hello( Display_medium& m ) { m.add( “Hello, world \n” ); } void
- 12. Неоднозначности Если класс наследует от различных базовых классов функции с одинаковыми именами и параметрами, то обращения
- 13. Метод clear() class Display_medium { public: virtual void clear( ); // …………… }; class Display_object {
- 14. Разрешение неоднозначностей class Window : public Display_medium, Display_object { public: // нет функции clear () };
- 15. Предотвращение неоднозначностей class Window : public Display_medium, Display_object { public: void clear(); }; void Window::clear() {
- 17. Скачать презентацию