Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

sem6 hw solved #1

Open
wants to merge 1 commit into
base: master
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 6 additions & 0 deletions .idea/vcs.xml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

3 changes: 3 additions & 0 deletions src/DIP/Car.java
Original file line number Diff line number Diff line change
@@ -1,5 +1,8 @@
package DIP;

/**
* Класс Car - модуль верхнего уровня. Он зависит от абстракции Engine.
*/
public class Car {
public Engine engine;

Expand Down
3 changes: 3 additions & 0 deletions src/DIP/DieselPetrol.java
Original file line number Diff line number Diff line change
@@ -1,5 +1,8 @@
package DIP;

/**
* Класс DieselPetrol модуль нижнего класса. Он зависит от абстракции Engine.
*/
public class DieselPetrol implements Engine {
@Override
public void start() {
Expand Down
8 changes: 7 additions & 1 deletion src/DIP/Engine.java
Original file line number Diff line number Diff line change
@@ -1,5 +1,11 @@
package DIP;

/**
* Интерфейс Engine. От него зависят все модули в нашем примере:
* верхний модуль - использует в конструкторе объект типа Engine,
* нижний модуль - реализует методы интерфейса.
* Но сам Engine про них ничего не знает(и знать не хочет)
*/
public interface Engine {
public void start();
void start();
}
4 changes: 3 additions & 1 deletion src/DIP/PetrolEngine.java
Original file line number Diff line number Diff line change
@@ -1,5 +1,7 @@
package DIP;

/**
* Класс PetrolEngine модуль нижнего класса. Он зависит от абстракции Engine.
*/
public class PetrolEngine implements Engine {
@Override
public void start(){
Expand Down
4 changes: 4 additions & 0 deletions src/DIP/Test.java
Original file line number Diff line number Diff line change
@@ -1,5 +1,9 @@
package DIP;

/**
* Объекту типа Car всё равно какой у него будет двигатель. Главное чтобы он
* был в зависимости от абстракции Engine.
*/
public class Test {
public static void main(String[] args) {
Car car = new Car(new PetrolEngine());
Expand Down
8 changes: 7 additions & 1 deletion src/ISP/Circle.java
Original file line number Diff line number Diff line change
@@ -1,5 +1,11 @@
package ISP;

/**
* Класс Circle имплементирует интерфейс Shape. Для 2D фигуры мы можем найти площадь.
* Если бы мы сделали один интерфейс с методами для площади и объема, то нам бы пришлось реализовать методы этого интерфейса.
* НО! мы не можем найти объем у круга. Объем характерен только для трехмерных фигур. Поэтому мы разделяем интерфейсы
* Shape & Shape3D.
*/
public class Circle implements Shape {
private int radius;

Expand All @@ -18,6 +24,6 @@ public void setRadius(int radius) {

@Override
public double area() {
return 2 * 3.14 * radius;
return 2 * Math.PI * radius;
}
}
3 changes: 3 additions & 0 deletions src/ISP/Cube.java
Original file line number Diff line number Diff line change
@@ -1,5 +1,8 @@
package ISP;

/**
* Класс Cube реализует интерфейс Shape3D. Для него характерен поиск площади сторон и объема фигруы.
*/
public class Cube implements Shape3D {
private int length;

Expand Down
3 changes: 3 additions & 0 deletions src/ISP/Shape.java
Original file line number Diff line number Diff line change
@@ -1,5 +1,8 @@
package ISP;

/**
* Для двумерных фигур можно найти площадь.
*/
public interface Shape {
public double area();

Expand Down
4 changes: 4 additions & 0 deletions src/ISP/Shape3D.java
Original file line number Diff line number Diff line change
@@ -1,5 +1,9 @@
package ISP;

/**
* Для трехмерных фигур можно найти площадь сторон и ОБЪЕМ фигуры.
* Здесь мы наследуемся от интерфейса Shape, потому что для трехмерных фигур справедлив подсчёт площади(но нужно учитывать все стороны).
*/
public interface Shape3D extends Shape{
public double volume();
}
7 changes: 7 additions & 0 deletions src/LSP/Test.java
Original file line number Diff line number Diff line change
@@ -1,5 +1,12 @@
package LSP;

/**
* Rectangle & Square являются наследниками класса QuadRangle.
* Еслм создать объект класса QuadRangle и подставить туда объект, который наследуется(имплементируется для интерфейсов) от QuadRangle,
* то программа не поломается и его функции будут работать правильно.
* Метод area() будет в любом случае искать площадь фигуры, независимо от того Rectangle это или Square, но будет делать это для разных фигур.
* НО БУДЕТ!
*/
public class Test {
public static void main(String[] args) {
QuadRangle quadRangle = new Rectangle(5, 3);
Expand Down
4 changes: 3 additions & 1 deletion src/OCP/Bus.java
Original file line number Diff line number Diff line change
@@ -1,5 +1,7 @@
package OCP;

/**
* Класс Bus расширяет класс Vehicle.
*/
public class Bus extends Vehicle{
@Override
public double calculateAllowedSpeed() {
Expand Down
3 changes: 3 additions & 0 deletions src/OCP/Car.java
Original file line number Diff line number Diff line change
@@ -1,5 +1,8 @@
package OCP;

/**
* Класс Car расширяет класс Vehicle.
*/
public class Car extends Vehicle{
public Car(int maxSpeed) {
super(maxSpeed, "Car");
Expand Down
4 changes: 4 additions & 0 deletions src/OCP/Vehicle.java
Original file line number Diff line number Diff line change
@@ -1,5 +1,9 @@
package OCP;

/**
* Классы Car & Bus наследуются от класса Vehicle. Он остается неизменным, то есть закрытым для модификации,
* но доступен для расширения(что и делают его дочерние классы).
*/
public class Vehicle {
private int maxSpeed;
private String type;
Expand Down
3 changes: 3 additions & 0 deletions src/SRP/Employee.java
Original file line number Diff line number Diff line change
@@ -1,5 +1,8 @@
package SRP;

/**
* Класс Работник со своими полями и гет/сет методами.
*/
public class Employee {
private String name;
private String dol;
Expand Down
4 changes: 4 additions & 0 deletions src/SRP/EmployeeSalaryCalculate.java
Original file line number Diff line number Diff line change
@@ -1,5 +1,9 @@
package SRP;

/**
* Отделяем логику вычисления ЗП, чтобы не менять класс Employee в будущем при изменении правил вычисления зарплаты.
* Single response для класса EmployeeSalaryCalculate - это вычислять ЗП.
*/
public class EmployeeSalaryCalculate {
private int baseSalary;

Expand Down