Alert icon
We're changing our privacy policy. This stuff matters.  Learn more  Dismiss

Урок 3 - ООП - Java для тестировщиков

Loading...

Sign in or sign up now!
Alert icon
Upgrade to the latest Flash Player for improved playback performance. Upgrade now or more info.
3,875
Loading...
Alert icon
Sign in or sign up now!
Alert icon

Uploaded by on Sep 15, 2011

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

Программа курса доступна здесь: http://goo.gl/8iCNb

В этом уроке рассматриваются следующие вопросы:
- ООП
- Объекты и классы
- Модификаторы доступа
- Поля класса

  • likes, 1 dislikes

Link to this comment:

Share to:
see all

All Comments (18)

Sign In or Sign Up now to post a comment!
  • @TheLexass shape это не объект, это только ссылка на него.

    Shape[] shape = new Shape[3];

    shape[0] = new Circle();

    shape[1] = new Square();

    shape[2] = new Rectangle();

    у каждого потомка переопределён метод draw().

    for(int i = 0; i < shape.length; i++) { shape[i].draw();

    }

    во время компиляции (на лету) происходит позднее связывание. По типу объекта в массиве, компилятор знает для какого метода нужно вызвать метод draw();

  • @TheLexass Сформулируйте свой вопрос. Поток получает от суперкласса поведение (все методы). Если Вам нужно, чтобы поток как-то по своему выполнял метод то, делается переопределение нужного метода.

    Shape shape = new Triangle();

    shape.draw()

    есть такое правило, переменная суперкласса, может ссылаться как на объект суперкласса, так и на его потомков. Это называется неявное восходящее преобразование. Но в общем, это полиморфизм, т.к. метод draw() будет выполняться для каждого потомка по своему.

  • не пойму, как в суперклассе можно вызывать методы подклассов, если суперкласс по-определению ничего не знает о своих наследниках и есть ли они вообще у него?

  • модификатор package? Отсутствие модификатора означает доступ в пределах пакета. :)

    package - это создание пакета. :) Добавили бы информационные субтитры. :)

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

    Это похоже на производителя часов и потребителя. Производитель часов максимально скрывает от потребителя механизм работы часов, оставляя только ушко (интерфейс), чтобы настроить часы.

  • Полиморфизм - это работа с неизвестными классами при условии, что они были унаследованы от известного базового класса.

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

  • Полиморфизм. Я создал класс Employee в котором создал метод fire и отдал класс коллегам. Они унаследовали мой класс и, один создал класс Manager, другой создал класс Cleaner. Каждый переопределил метод fire - увольнение с разными условиями. Директор приказал уволить всех рабочих. Я обращаюсь к базовому классу Employee и даю действие fire уволить всех. Менеджеры получают при увольнении 1000 баксов (переопределённый метод), а уборщики билет в Магадан (переопределённый метод).

  • Полиморфизм. Я создаю класс ChessMan, создаю метод move(). Отдаю свой класс коллегам. Каждый программист наследует мой класс и создаёт свою фигуру. Один пишет класс Queen, другой Knight и т.д. каждая фигура переопределяет мой метод move() по своему, т.к. каждая фигура в шахматах имеет уникальный ход.

    Я не должен знать сколько раз наследовали мой класс, какие существуют фигуры, как они умеют ходить. Я даю общую команду move() и каждая фигура, которая наследовала мой класс ходит по своему.

  • 30:00-37:30 Автора унесло... вынос мозга.

  • @19:00-19:30 Ничего не понял. Что дублируем и кому обращаемся? Может быть автор имел ввиду, что нужно использовать композицию (has -содержит)? Т.е. механизм создания нового класса из объектов существующих классов?

    Без сарказма, я хочу лишь понять и исправить, если это необходимо. :)

Loading...

Alert icon
0 / 00Unsaved Playlist Return to active list
    1. Your queue is empty. Add videos to your queue using this button:
      or sign in to load a different list.
    Loading...Loading...Saving...
    • Clear all videos from this list
    • Learn more