Перейти к публикации
alex_xpert

Java. ООП. Понятия.

Рекомендованные сообщения

alex_xpert

Здравствуйте.

В этой статье я расскажу об основных понятиях объектно-ориентированного программирования на примере Java.

 

Абстракция.

Абстракция - это совокупность основных, важных свойств объекта, а само абстрагирование - способ эти самые свойства выделить.

К примеру, любая геометрическая фигура имеет периметр и площадь. Но прямоугольник имеет ещё диагональ, а треугольник - 3 биссектрисы, 3 медианы и 3 высоты. Как видим, самые значимые свойства - периметр и площадь. Значит, абстрактное представление геометрической фигуры будет примерно таким:

 

package pw.nevex.geometry;

public abstract class Figure {
    protected int  p; // Периметр
    protected int s; // Площадь

    public int getP() {
        return p;
    }

    public int getS() {
        return s;
    }

}

 

Теперь мы можем описать класс прямоугольника, наследуясь от класса фигуры.

 

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

 

package pw.nevex.geometry;

import java.lang.Math;

public class Rectangle extends Figure {
    private int a; // Сторона А
    private int b; // Сторона Б
    private double d; // Диагональ

    public Rectangle(int _a, int _b) {
        a = _a;
        b = _b;
        p = (a + b) * 2;
        s = a * b;
        d = Math.sqrt(Math.pow(a, 2) + Math.pow(b, 2));
    }

    public double getD() {
        return d;
    }

}

 

И теперь мы вполне можем получить площадь или периметр прямоугольника:

 

Rectangle r = new Rectangle(3, 4);
int per = r.getP();

 

Полиморфизм - это свойство системы использовать объекты с одинаковым интерфейсом без информации о типе и внутренней структуре объекта.

Интерфейсы зачастую используются для описания так называемых "слушателей" каких-либо событий. Например, дверь может открываться и закрываться - 2 события:

 

package pw.nevex.house;

public interface Door {

    public void onOpen();
    public void onClose();

}

 

Реализуем нашу дверь:

 

package pw.nevex.house;

public class OurDoor implements Door {

    public void onOpen() {
        System.out.println("OurDoor is open.");
    }

    public void onClose() {
        System.out.println("OurDoor is close.");
    }

}

Инкапсуляция - это возможность управления доступом к данным и методам, работающим с ними.

Модификаторами доступа являются public, protected и private.

  • public - метод или переменная доступны из любого класса программы, без ограничений
  • protected - метод или переменная доступны только из данного класса и его потомков
  • private - метод или переменная доступны только из данного класса
  • без модификатора - метод или переменная доступны для всех классов из данного пакета

 

Спасибо за внимание.

Изменено пользователем Xpert™

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
sanabek

Спасибо, Все хорошо написано и понятнее чем в книжке,

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Создайте аккаунт или войдите в него для комментирования

Вы должны быть пользователем, чтобы оставить комментарий

Создать аккаунт

Зарегистрируйтесь для получения аккаунта. Это просто!

Зарегистрировать аккаунт

Войти

Уже зарегистрированы? Войдите здесь.

Войти сейчас

×
×
  • Создать...