Найти в Дзене
Анастасия Софт

Урок 19 для Java-разработчика. 💻💡Погружение в классы и ООП в Java: просто, на пальцах и с примерами

Классы и объектно-ориентированное программирование (ООП) — это сердце и лёгкие языка Java. Без них программа превращается в кашу из команд и переменных. Если вы когда-либо создавали персонажа в игре, настраивая его внешность и способности, вы уже почти понимаете ООП. В этой статье мы объясним: Класс — это шаблон или чертёж. А объект — это экземпляр этого шаблона. Пример из жизни: есть чертёж машины — это класс. По этому чертежу можно создать множество машин — это объекты. Все они выглядят и ведут себя одинаково (или почти). В Java: public class Car {
String model;
int year;
void startEngine() {
System.out.println(model + " is starting...");
}
}
Car myCar = new Car();
myCar.model = "Toyota";
myCar.year = 2022;
myCar.startEngine(); Везде. Классы — это основа любой программы на Java. Хотите создать банковскую систему? У вас будет класс Account. Делаете игру? Классы Player, Enemy, Weapon. public class BankAccount {
private double balance;
public void depo
Оглавление
Урок 19 для Java-разработчика. 💻💡Погружение в классы и ООП в Java: просто, на пальцах и с примерами
Урок 19 для Java-разработчика. 💻💡Погружение в классы и ООП в Java: просто, на пальцах и с примерами

Введение

Классы и объектно-ориентированное программирование (ООП) — это сердце и лёгкие языка Java. Без них программа превращается в кашу из команд и переменных. Если вы когда-либо создавали персонажа в игре, настраивая его внешность и способности, вы уже почти понимаете ООП. В этой статье мы объясним:

  • Что такое классы и объекты.
  • Где и зачем они применяются.
  • Основные принципы ООП.
  • Лучшие практики и распространённые ошибки.
  • Примеры от простого к сложному.
  • Тест на самопроверку.

Что такое класс и объект?

Класс — это шаблон или чертёж. А объект — это экземпляр этого шаблона.

Пример из жизни: есть чертёж машины — это класс. По этому чертежу можно создать множество машин — это объекты. Все они выглядят и ведут себя одинаково (или почти).

В Java:

public class Car {
String model;
int year;

void startEngine() {
System.out.println(model + " is starting...");
}
}

Car myCar = new Car();
myCar.model = "Toyota";
myCar.year = 2022;
myCar.startEngine();

Где применяются классы?

Везде. Классы — это основа любой программы на Java. Хотите создать банковскую систему? У вас будет класс Account. Делаете игру? Классы Player, Enemy, Weapon.

Основные принципы ООП

  1. Инкапсуляция — сокрытие внутренностей. Всё, что не нужно видеть извне — прячем:

public class BankAccount {
private double balance;

public void deposit(double amount) {
if (amount > 0) balance += amount;
}

public double getBalance() {
return balance;
}
}

  1. Наследование — когда один класс расширяет другой:

public class Animal {
public void speak() {
System.out.println("Animal sound");
}
}

public class Dog extends Animal {
public void speak() {
System.out.println("Woof!");
}
}

  1. Полиморфизм — один интерфейс, много реализаций:

Animal a = new Dog();
a.speak(); // Woof!

  1. Абстракция — выделение главного, скрытие лишнего:

abstract class Shape {
abstract double area();
}

class Circle extends Shape {
double radius;
Circle(double r) { radius = r; }
double area() { return Math.PI * radius * radius; }
}

Частые ошибки

  • Игнорировать модификаторы доступа (private, public).
  • Не использовать конструкторы.
  • Писать "божественные" классы на 1000 строк, делающие всё.
  • Использовать наследование, когда лучше — композиция.

Лучшие практики

  • Один класс = одна ответственность (принцип SRP).
  • Используйте final, если поле не должно меняться.
  • Избегайте публичных полей.
  • Пишите понятные имена: getTotalSalary(), а не gts().

Примеры задач

1. Класс, описывающий прямоугольник

class Rectangle {
private int width, height;
public Rectangle(int w, int h) {
width = w; height = h;
}
public int area() { return width * height; }
}

2. Класс студента с методом подсчёта среднего балла

class Student {
String name;
int[] grades;
public double average() {
return Arrays.stream(grades).average().orElse(0);
}
}

3. Наследование: сотрудник и менеджер

class Employee {
String name;
double salary;
}

class Manager extends Employee {
int teamSize;
}

4. Инкапсуляция: банковский счёт
(см. выше пример с BankAccount)

5. Полиморфизм: фигуры
(см. пример с Shape и Circle)

6. Композиция: заказ и клиент

class Client {
String name;
}

class Order {
Client client;
double total;
}

7. Использование пакетов и импортов

package com.example.models;
public class User { ... }

8. Конструкторы и перегрузка методов

class Book {
String title;
Book() { this("Untitled"); }
Book(String t) { title = t; }
}

Мини-тест

  1. Что делает модификатор private?
  2. Какой принцип ООП позволяет вызывать speak() у Animal, Dog и Cat по одному интерфейсу?
  3. Что такое конструктор и зачем он нужен?
  4. В чём разница между классом и объектом?

Задача на закрепление

Создайте класс Library, который содержит массив Book. У каждой книги есть название и количество страниц. Добавьте метод, возвращающий среднее число страниц во всей библиотеке.

Вывод

ООП — это не просто модный подход. Это способ мыслить, организовывать и масштабировать ваш код. Классы и объекты помогают справляться со сложностью, делают код читаемым и удобным для командной работы. Если освоите это — будете писать не просто код, а элегантную архитектуру.

Ответы на тест

  1. Делает поле/метод доступным только внутри класса.
  2. Полиморфизм.
  3. Специальный метод, вызываемый при создании объекта, используется для инициализации.
  4. Класс — описание, объект — экземпляр этого описания.