hubert
41 уровень

Уровень 11: план уровня и доп. материалы

Пост из группы Архив info.javarush.ru
3745 участников
План уровня:
  • Основы ООП: основные принципы, наследование, инкапсуляция.
  • Принципы ООП: абстракция, инкапсуляция, наследование и полиморфизм.
  • Принцип слабой связности
  • Абстракция
  • Наследование детально
  • Инкапсуляция детально, преимущества

Курс Java Что еще можно посмотреть на досуге: Ссылка на вики по ООП Интересная статья про наследование
Нашли классную ссылку к материалу данной темы? Добавьте ее сюда в виде комментария. Возможно, именно Ваша ссылка поможет другому человеку стать программистом и улучшить свою жизнь!

Вернуться к плану обучения
Вернуться к обучению
java онлайн
на JavaRush
Комментарии (19)
  • популярные
  • новые
  • старые
Для того, что бы оставить комментарий вы должны авторизоваться
MariaM24 уровень
11 августа 2016, 12:46
интересно, насколько хорош пример из 1ой лекции, где кит наследуется от коровы и переопределяются методы. В доп.материалах есть статья, в которой всячески от такого предостерегают. Согласно статье, наследование должно быть только в том случае, если наследник является также и родителем (н-р: корова — животное). А в примере лекции по-моему это не совсем так.
Yuri_050411 уровень
2 октября 2016, 15:10
Вы сильно удивитесь когда узнаете, что и киты и коровы относятся к животным и млекопитающим :D
Впрочем как и люди ;)
Yuri_050411 уровень
2 октября 2016, 21:26
Прочитал не внимательно — написал глупость. Конечно не стоит кита от коровы наследовать. Вот обоих от класса Animal будет нормально.
IvanSPb21 уровень, Brooklyn
6 марта 2016, 22:38
Возможно, только у меня возник вопрос, почему в одном файле несколько классов, как так может быть — ведь говорили о том, что один файл — один класс.
На 11 уровне активно используются внутренние классы, так называемые inner classes. Странно, но раньше эта тема никак и нигде не затронута. Есть еще nested classes — вложенные классы.
Поискал на эту тему материал — оказывается, тут есть о чем поговорить и все не так просто, хотя и ничего сверхсложного тоже нет. Рекомендую к прочтению, даже сказал бы must read. Сжатая, но очень емкая статья:
easy-code.ru/lesson/java-nested-classes
dksys20 уровень, Казань
7 апреля 2015, 14:52
«Интерфейсы — это больше чем интерфейсы»
опечатка — «каждый их которых» (4й абзац)
Antenka11 уровень
25 марта 2015, 17:43
Доброе время суток. Не уверена, что пишу в нужный топик (не нашла более подходящего). Есть замечание к лекции «Основные принципы ООП», которая идет в основном курсе первой на 11 уровне. В описании абстракции намешано 2 понятия: абстракция и декомпозиция. Обратите пожалуйста внимание.
shagi39 уровень, Москва
10 ноября 2014, 19:46
Подскажите, если мы инкапсулируем поля, то зачем тогда потом им создавать методы get и set? Разве по сути это не тоже самое, если бы они были pulbic?
gloomkolomna26 уровень
11 ноября 2014, 13:25
cybern.ru/java-access-modifiers.html — может тут найдете ответ?
Asirius25 уровень, Новокузнецк
22 января 2015, 10:31
если он будет public, значит к нему есть доступ, следовательно это поле можно изменить непосредственно обратившись к нему… а если оно только для чтения? значит нужно делать get-ер для этого поля.
nomerat16 уровень, Новосибирск
16 апреля 2015, 15:49
Геттеры и сеттеры вида:

getValue() {
    return x;
}

setValue(Object x) {
    this.x = x
}


это простейший случай. Обычно же, некоторое внутренние состояние объекта x может вычисляться по сложному алгоритму (как на вход, так и на выход), в который могут входить проверки на корректность введённых данных или сложные вычисления. Пример был в лекции, пусть x — возраст человека. Тогда:
class Human {
int x; //возраст
String sex; //пол

    setValue(int x) {
        if ((x < 0) || (x > 125)) {
            //выкинуть исключение
        } else {
            this.x = x
        }
    }

    getValue() {
        if ("девушка".equals(sex)) {
            return 18;
        else {
            return x;
        }
    }
}
dimaMJ25 уровень, Craiova
10 августа 2014, 17:39
Допустим у нас нужно создать домашних животных (кот, собака, корова, свинья). У меня возник вопрос как будет лучше и правильней?
1) Создать класс Pets и в нем задать конструктор с параметрами Pets(String тип животного,String имя, и т.д.) и проверять если допустим тип Собака, то будут вызываться определенные ф-ции, которые подходят только к собаке.
2) Создать класс Pets, и создавать классы кот, собака, корова, свинья и наследовать их от Pets. Но тут вопрос, так как я только учусь) Допустим в Pets есть метод setvoice, который загружает звук, могу ли я в разных классах его вызывать и в параметр передавать определенные звуки или как по другому можно животному присвоить свой звук ?) Обьясните кому не сложно) У нас получается что классы Cat и другие как бы являются экземплярами класса Pets и имеют возможность добавлять свои методы?
tanzwud34 уровень
10 августа 2014, 19:30
Начнем с создания абстрактного класса. Который отвечает за общие для всех петКонечно не каждй Pet может исдавать звуки, но мы посчитаем что это так. В будущем проще использовать интерфейсе к примему Voceable.
Задем создадим класс Dog где уже определим этот самый метод.
одна из разновидностей Pet
Ну а дальше дело техники по образу и подобию создаем коров и тп. Простейшее наследование в работе.
Как все это использовать? Лучше всего глянуть на шаблоны проектирования, к примеру на AbstractFactory. Чтобы не перезагружать информацией, вот простейшее использования получившегося Java Runtime полиморфизма в действии.
main
Ну и на последок UML Диаграма наших классов.

Да как Pet так и разные классы которые его наследуют могут иметь отличные методы а также могут Override, Overload различные методы, наследовать интерфейсы и тп.
dimaMJ25 уровень, Craiova
10 августа 2014, 19:45
спасибо, более менее понятно) я думаю пока ООП на практике не попробую, то ничего толком не пойму) так на уровне теории понятно, а на уровне практики пока нет, ну все впереди) У меня появился этот вопрос из-за примера в 11 лекции, с шахматами (там где классы фигур), там у меня возник вопрос, если все классы наследуют один класс у которого три переменные, то у каждого класса соответственно значения этих переменных будут разные?
tanzwud34 уровень
10 августа 2014, 19:50
По умолчанию все значения будут братся из родительского класса. Однако наследники могут эти значения переопределять как минимум.
dimaMJ25 уровень, Craiova
10 августа 2014, 19:51
понятно, спасибо)
Nirvana16 уровень, Томск
9 ноября 2014, 17:32
Тоже выражу свою благодарность ВАМ) за такой подробный ответ)
rmk21 уровень, Volga
9 февраля 2014, 12:19
а где сама лекция?)

план лекции есть, а лекцию где взять?)
iruslan21 уровень
13 февраля 2014, 00:52
интернет батенька))
Diana41 уровень
13 февраля 2014, 04:35
Лекция внутри курса JavaRush