hubert
41 уровень

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

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

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

Вернуться к плану обучения
Вернуться к обучению
java онлайн
на JavaRush
Комментарии (19)
  • популярные
  • новые
  • старые
Для того, чтобы оставить комментарий Вы должны авторизоваться
MariaM
Уровень 24, Россия
11 августа 2016, 12:46
интересно, насколько хорош пример из 1ой лекции, где кит наследуется от коровы и переопределяются методы. В доп.материалах есть статья, в которой всячески от такого предостерегают. Согласно статье, наследование должно быть только в том случае, если наследник является также и родителем (н-р: корова — животное). А в примере лекции по-моему это не совсем так.
Yuri_0504
Уровень 11, Украина
2 октября 2016, 15:10
Вы сильно удивитесь когда узнаете, что и киты и коровы относятся к животным и млекопитающим :D
Впрочем как и люди ;)
Yuri_0504
Уровень 11, Украина
2 октября 2016, 21:26
Прочитал не внимательно — написал глупость. Конечно не стоит кита от коровы наследовать. Вот обоих от класса Animal будет нормально.
IvanSPb
Уровень 21, Brooklyn, США
6 марта 2016, 22:38
Возможно, только у меня возник вопрос, почему в одном файле несколько классов, как так может быть — ведь говорили о том, что один файл — один класс.
На 11 уровне активно используются внутренние классы, так называемые inner classes. Странно, но раньше эта тема никак и нигде не затронута. Есть еще nested classes — вложенные классы.
Поискал на эту тему материал — оказывается, тут есть о чем поговорить и все не так просто, хотя и ничего сверхсложного тоже нет. Рекомендую к прочтению, даже сказал бы must read. Сжатая, но очень емкая статья:
easy-code.ru/lesson/java-nested-classes
dksys
Уровень 20, Казань, Россия
7 апреля 2015, 14:52
«Интерфейсы — это больше чем интерфейсы»
опечатка — «каждый их которых» (4й абзац)
Antenka
Уровень 11
25 марта 2015, 17:43
Доброе время суток. Не уверена, что пишу в нужный топик (не нашла более подходящего). Есть замечание к лекции «Основные принципы ООП», которая идет в основном курсе первой на 11 уровне. В описании абстракции намешано 2 понятия: абстракция и декомпозиция. Обратите пожалуйста внимание.
shagi
Уровень 39, Москва, Украина
10 ноября 2014, 19:46
Подскажите, если мы инкапсулируем поля, то зачем тогда потом им создавать методы get и set? Разве по сути это не тоже самое, если бы они были pulbic?
gloomkolomna
Уровень 26
11 ноября 2014, 13:25
cybern.ru/java-access-modifiers.html — может тут найдете ответ?
Asirius
Уровень 25, Новокузнецк
22 января 2015, 10:31
если он будет public, значит к нему есть доступ, следовательно это поле можно изменить непосредственно обратившись к нему… а если оно только для чтения? значит нужно делать get-ер для этого поля.
nomerat
Уровень 16, Новосибирск, Россия
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; 
        }
    } 
}
dimaMJ
Уровень 25, Craiova, Румыния
10 августа 2014, 17:39
Допустим у нас нужно создать домашних животных (кот, собака, корова, свинья). У меня возник вопрос как будет лучше и правильней?
1) Создать класс Pets и в нем задать конструктор с параметрами Pets(String тип животного,String имя, и т.д.) и проверять если допустим тип Собака, то будут вызываться определенные ф-ции, которые подходят только к собаке.
2) Создать класс Pets, и создавать классы кот, собака, корова, свинья и наследовать их от Pets. Но тут вопрос, так как я только учусь) Допустим в Pets есть метод setvoice, который загружает звук, могу ли я в разных классах его вызывать и в параметр передавать определенные звуки или как по другому можно животному присвоить свой звук ?) Обьясните кому не сложно) У нас получается что классы Cat и другие как бы являются экземплярами класса Pets и имеют возможность добавлять свои методы?
tanzwud
Уровень 34
10 августа 2014, 19:30
Начнем с создания абстрактного класса. Который отвечает за общие для всех петКонечно не каждй Pet может исдавать звуки, но мы посчитаем что это так. В будущем проще использовать интерфейсе к примему Voceable.
Задем создадим класс Dog где уже определим этот самый метод.
одна из разновидностей Pet
Ну а дальше дело техники по образу и подобию создаем коров и тп. Простейшее наследование в работе.
Как все это использовать? Лучше всего глянуть на шаблоны проектирования, к примеру на AbstractFactory. Чтобы не перезагружать информацией, вот простейшее использования получившегося Java Runtime полиморфизма в действии.
main
Ну и на последок UML Диаграма наших классов.

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

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