Иллюстрированный самоучитель по Java

Объектно-ориентированное программирование в Java

  • Парадигмы программирования

    Вся полувековая история программирования компьютеров, а может быть, и история всей науки – это попытка совладать со сложностью окружающего мира. Задачи, встающие перед программистами, становятся все более громоздкими, информация, которую надо обработать, растет как снежный ком.
  • Принципы объектно-ориентированного программирования. Абстракция.

    Объектно-ориентированное программирование развивается уже более двадцати лет. Имеется несколько школ, каждая из которых предлагает свой набор принципов работы с объектами и по-своему излагает эти принципы. Но есть несколько общепринятых понятий. Перечислим их.
  • Иерархия

    Иерархия объектов давно используете для их классификации. Особенно детально она проработана в биологии. Все знакомы с семействами, родами и видами. Мы можем сделать описание своих домашних животных (pets): кошек (cats), собак (dogs), коров (cows) и прочих следующим образом: | class Pet{ // Здесь описываем общие свойства всех домашних любимцев | Master person;
  • Ответственность

    В нашем примере рассматривается только взаимодействие в процессе кормления, описываемое методом eat(). В этом методе животное обращается к хозяину, умоляя его применить метод getFood(). | В англоязычной литературе подобное обращение описывается словом message.
  • Модульность. Принцип KISS.

    Этот принцип утверждает – каждый класс должен составлять отдельный модуль. Члены класса, к которым не планируется обращение извне, должны быть инкапсулированы. | В языке Java инкапсуляция достигается добавлением модификатора private к описанию члена класса. Например: | private int mouseCatched;
  • Как описать класс и подкласс

    Итак, описание класса начинается со слова class, после которого записывается имя класса. Соглашения "Code Conventions" рекомендуют начинать имя класса с заглавной буквы. | Перед словом class можно записать модификаторы класса (class modifiers). Это одно из слов public, abstract, final, strictfp.
  • Абстрактные методы и классы

    При описании класса Pet мы не можем задать в методе voice () никакой полезный алгоритм, поскольку у всех животных совершенно разные голоса. | В таких случаях мы записываем только заголовок метода и ставим после закрывающей список параметров скобки точку с запятой.
  • Окончательные члены и классы

    Пометив метод модификатором final, можно запретить его переопределение в подклассах. Это удобно в целях безопасности. Вы можете быть уверены, что метод выполняет те действия, которые вы задали. Именно так определены математические функции sin(), cos() и прочие в классе Math.
  • Класс Object

    Если при описании класса мы не указываем никакое расширение, т. е. не пишем слово extends и имя класса за ним, как при описании класса Pet, то Java считает этот класс расширением класса object, и компилятор дописывает это за нас: | class Pet extends Object{… } | Можно записать это расширение и явно.
  • Конструкторы класса

    Вы уже обратили внимание на то, что в операции new, определяющей экземпляры класса, повторяется имя класса со скобками. Это похоже на обращение к методу, но что за "метод", имя которого полностью совпадает с именем класса? | Такой "метод" называется конструктором класса (class constructor).
  • Операция new

    Пора подробнее описать операцию с одним операндом, обозначаемую словом new. Она применяется для выделения памяти массивам и объектам. | В первом случае в качестве операнда указывается тип элементов массива и количество его элементов в квадратных скобках, например: | double a[] = new double[100];
  • Статические члены класса

    Разные экземпляры одного класса имеют совершенно независимые друг от друга поля-, принимающие разные значения. Изменение поля в одном экземпляре никак не влияет на то же поле в другом экземпляре. В каждом экземпляре для таких полей выделяется своя ячейка памяти.
  • Класс Complex

    Комплексные числа широко используются не только в математике. Они часто применяются в графических преобразованиях, в построении фракталов, не говоря уже о физике и технических дисциплинах. Но класс, описывающий комплексные числа, почему-то не включен в стандартную библиотеку Java.
  • Метод main()

    Всякая программа, оформленная как приложение (application), должна содержать метод с именем main. Он может быть один на все приложение или содержаться в некоторых классах этого приложения, а может находиться и в каждом классе.
  • Где видны переменные

    В языке Java нестатические переменные можно объявлять в любом месте кода между операторами. Статические переменные могут быть только полями класса, а значит, не могут объявляться внутри методов и блоков. Какова же область видимости (scope) переменных?
  • Вложенные классы

    В этой главе уже несколько раз упоминалось, что в теле класса можно сделать описание другого, вложенного (nested) класса. А во вложенном классе можно снова описать вложенный, внутренний (inner) класс и т. д.
  • Отношения "быть частью" и "являться"

    Теперь у нас появились две различные иерархии классов. Одну иерархию образует наследование классов, другую – вложенность классов. | Определив, какие классы будут написаны в вашей программе, и сколько их будет, подумайте, как спроектировать взаимодействие классов?
Если Вы заметили ошибку, выделите, пожалуйста, необходимый текст и нажмите CTRL + Enter, чтобы сообщить об этом редактору.