• Апреля 14, 2021, 10:55:02 am
• Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Не получили письмо с кодом активации?
Новости: на нашем Telegram канале: https://t.me/progkievua

Автор Тема: Java OOP 27.03.2021 Суббота 15.30-19.30  (Прочитано 142 раз)

Alexander Ts

  • Преподаватели
  • Пользователи
  • *
  • Сообщений: 14729
    • Просмотр профиля
    • E-mail

Vitalii Moholiuk

  • Пользователи
  • *
  • Сообщений: 9
    • Просмотр профиля
    • E-mail
Re: Java OOP 27.03.2021 Суббота 15.30-19.30
« Ответ #1 : Апреля 01, 2021, 01:18:34 pm »
Урок 1. Введение в ООП

Задание 1.
Класс Cat
package org.vitalii;

public class Cat {
    private String color;
    private String name;
    private boolean sex;
    private int year;

    public Cat(String color, String name, boolean sex, int year) {
        this.color = color;
        this.name = name;
        this.sex = sex;
        this.year = year;
    }

    public Cat(){

    }

    public String getColor() {
        return color;
    }

    public void setColor(String color) {
        this.color = color;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public boolean isSex() {
        return sex;
    }

    public void setSex(boolean sex) {
        this.sex = sex;
    }

    public int getYear() {
        return year;
    }

    public void setYear(int year) {
        this.year = year;
    }

    public void meow(){
        System.out.println("Meow-Meow");
    }

    public void pet(){
        System.out.println("*Cat is being pet*");
    }

    public void call(){
        System.out.println("Cat is coming to you");
    }

    @Override
    public String toString() {
        return "Cat{" +
                "color='" + color + '\'' +
                ", name='" + name + '\'' +
                ", sex=" + sex +
                ", year=" + year +
                '}';
    }
}

Класс Main
package org.vitalii;

public class Main {

    public static void main(String[] args) {
        Cat cat = new Cat();
        cat.setName("Bumchik");
        cat.setColor("grey");
        cat.setSex(true);
        cat.setYear(2006);
        System.out.println(cat);

        Cat kitty = new Cat("white", "Kat`ka", false, 2020);
        System.out.println(kitty);
    }
}

Задание 2.

Класс Triangle
package org.vitalii;

public class Triangle {

    private double a;
    private double b;
    private double c;

    public Triangle(double a, double b, double c) {
        this.a = a;
        this.b = b;
        this.c = c;
    }

    public Triangle() {
    }

    public double getA() {
        return a;
    }

    public void setA(int a) {
        this.a = a;
    }

    public double getB() {
        return b;
    }

    public void setB(int b) {
        this.b = b;
    }

    public double getC() {
        return c;
    }

    public void setC(int c) {
        this.c = c;
    }

    @Override
    public String toString() {
        return "Triangle{" +
                "a=" + a +
                ", b=" + b +
                ", c=" + c +
                '}';
    }

    public double calculateArea(){
        double p = (a+b+c)/2;

        double s = Math.sqrt(p*(p-a)*(p-b)*(p-c));

        return s;
    }
}

Класс Main
package org.vitalii;

public class Main {

    public static void main(String[] args) {
        Triangle triangle = new Triangle();
        triangle.setA(3);
        triangle.setB(3);
        triangle.setC(3);
        System.out.println(triangle.calculateArea());

        Triangle triangle2 = new Triangle(3, 3, 3);
        System.out.println(triangle2.calculateArea());
    }
}
Задание 3.
Класс Vector3d
package org.vitalii;

public class Vector3d {
    private int x;
    private int y;
    private int z;

    public Vector3d(int x, int y, int z) {
        this.x = x;
        this.y = y;
        this.z = z;
    }

    public Vector3d() {
    }

    public int getX() {
        return x;
    }

    public void setX(int x) {
        this.x = x;
    }

    public int getY() {
        return y;
    }

    public void setY(int y) {
        this.y = y;
    }

    public int getZ() {
        return z;
    }

    public void setZ(int z) {
        this.z = z;
    }

    @Override
    public String toString() {
        return "[" +
                "x=" + x +
                ", y=" + y +
                ", z=" + z +
                ']';
    }

    public Vector3d add(Vector3d vector){
        int x = this.x + vector.x;
        int y = this.y + vector.y;
        int z = this.z + vector.z;
        Vector3d result = new Vector3d(x, y, z);
        return result;
    }

    public int scalar(Vector3d vector){
        int result = this.x*vector.x + this.y*vector.y + this.z*vector.z;
        return result;
    }

    public Vector3d vectorProduct(Vector3d vector){
        int x = this.y*vector.z - this.z*vector.y;
        int y = this.z*vector.x - this.x*vector.z;
        int z = this.x*vector.y - this.y*vector.x;
        Vector3d result = new Vector3d(x, y, z);
        return result;
    }
}

Класс Main
package org.vitalii;

public class Main {

    public static void main(String[] args) {
        Vector3d vectorA = new Vector3d(5, 6, 7);
        Vector3d vectorB = new Vector3d(7, 6, 5);
        Vector3d vectorC = vectorA.add(vectorB);
        System.out.println(vectorC);
        System.out.println(vectorA.scalar(vectorB));
        vectorC = vectorA.vectorProduct(vectorB);
        System.out.println(vectorC);
    }
}

Задание 4.
Класс Network
package org.vitalii;

import java.util.Arrays;

public class Network {

    private Phone[] phones;
    private String name;
    private int capacity;

    public Network(String name, int capacity) {
        this.name = name;
        this.capacity = capacity;
        this.phones = new Phone[capacity];
    }

    public Network() {
    }

    public Phone[] getPhones(){
        return phones;
    }

    public void setPhones(Phone[] phones) {
        this.phones = phones;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public int getCapacity() {
        return capacity;
    }

    public void setCapacity(int capacity) {
        this.capacity = capacity;
    }

    public Phone[] printPhones() {
        int count = 0;
        for(int i=0; i<this.phones.length; i++){
            if(phones[i] != null){
                count++;
            }else{
                break;
            }
        }
        Phone[] arrayToPrint = new Phone[count];
        for(int j=0; j<arrayToPrint.length; j++){
            arrayToPrint[j]=this.phones[j];
        }
        return arrayToPrint;
    }

    public void addPhone(Phone newPhone){
        for(int i=0; i<phones.length; i++){
            if(phones[i] == null){
                phones[i] = newPhone;
                System.out.println(newPhone + " успешно добавлен в cеть '" + this.getName() + "'!");
                break;
            }else if(phones[i].getNumber().equals(newPhone.getNumber())){
                System.out.println(newPhone + " уже есть в сети '" + this.getName() + "'!");
                break;
            }
        }
    }

    @Override
    public String toString() {
        return "Сеть с именем '" + this.getName() + "' и с размером " + this.getCapacity() + " имеет такую базу телефонов: " + Arrays.toString(printPhones());
    }
}

Класс Phone
package org.vitalii;

public class Phone {

    private String number;
    private Network network;

    public Phone(String number, Network network) {
        this.number = number;
        this.network = network;
        network.addPhone(this);
    }

    public Network getNetwork() {
        return network;
    }

    public void setNetwork(Network network) {
        this.network = network;
    }

    public String getNumber() {
        return number;
    }

    public void setNumber(String number) {
        this.number = number;
    }

    @Override
    public String toString() {
        return "Номер " + this.number;
    }

    public void call(Phone phone){
        for(int i=0; i<network.getPhones().length; i++){
            if(phone == network.getPhones()[i]){
                System.out.println("Успешно дзвоним с телефона " + this.getNumber() + " на телефон " + phone.getNumber());
                return;
            }
        }
        System.out.println("Такого номера не существует в сети '" + network.getName() + "'");
    }
}

Класс Main


package org.vitalii;

public class Main {

    public static void main(String[] args) {
        Network vodafone = new Network("Vodafone", 10);
        Network life = new Network("Life", 1);
        Phone phone = new Phone("0992078025", vodafone);

        Phone anotherPhone = new Phone("0992078025", vodafone);
        anotherPhone = new Phone("0992223333", life);

        Phone iphone = new Phone("0997774444", vodafone);
        System.out.println(vodafone);

        phone.call(iphone);
        phone.call(anotherPhone);
    }
}

Vitalii Moholiuk

  • Пользователи
  • *
  • Сообщений: 9
    • Просмотр профиля
    • E-mail
Re: Java OOP 27.03.2021 Суббота 15.30-19.30
« Ответ #2 : Апреля 01, 2021, 04:54:15 pm »
Урок 2. Наследование

Задание 1.
Класс Shape
package org.vitalii;

public abstract class Shape {
    public abstract double getPerimeter();
    public abstract double getArea();
}

Задание 2.
Класс Point
package org.vitalii;

public class Point {
    private double x;
    private double y;

    public Point(double x, double y) {
        this.x = x;
        this.y = y;
    }

    public Point() {
    }

    public double getX() {
        return x;
    }

    public void setX(double x) {
        this.x = x;
    }

    public double getY() {
        return y;
    }

    public void setY(double y) {
        this.y = y;
    }

    @Override
    public String toString() {
        return "[" +
                "x=" + x +
                ", y=" + y +
                ']';
    }
}

Задание 3.
Класс Circle
package org.vitalii;

public class Circle extends Shape {
    private Point a;
    private Point b;
    private double radius;

    public Circle(Point a, Point b) {
        this.a = a;
        this.b = b;
        calculateRadius();
    }

    public Circle() {
    }

    public double getRadius() {
        return radius;
    }

    public Point getA() {
        return a;
    }

    public void setA(Point a) {
        this.a = a;
    }

    public Point getB() {
        return b;
    }

    public void setB(Point b) {
        this.b = b;
    }

    @Override
    public String toString() {
        return "Круг{" +
                "A=" + a +
                ", B=" + b +
                '}';
    }

    @Override
    public double getPerimeter() {
        calculateRadius();
        double perimeter = Math.PI * 2 * radius;
        return perimeter;
    }

    @Override
    public double getArea() {
        calculateRadius();
        double area = Math.PI * radius * radius;
        return area;
    }

    private double calculateRadius(){
        radius = Math.sqrt(Math.pow((b.getX() - a.getX()), 2) + Math.pow((b.getY() - a.getY()), 2));
        return radius;
    }
}

Класс Triangle
package org.vitalii;

public class Triangle extends Shape {
    private Point a;
    private Point b;
    private Point c;
    private double sideA;
    private double sideB;
    private double sideC;

    public Triangle(Point a, Point b, Point c) {
        this.a = a;
        this.b = b;
        this.c = c;
        calculateSides();
    }

    public Triangle() {
    }

    public double getSideA() {
        return sideA;
    }

    public double getSideB() {
        return sideB;
    }

    public double getSideC() {
        return sideC;
    }

    public Point getA() {
        return a;
    }

    public void setA(Point a) {
        this.a = a;
    }

    public Point getB() {
        return b;
    }

    public void setB(Point b) {
        this.b = b;
    }

    public Point getC() {
        return c;
    }

    public void setC(Point c) {
        this.c = c;
    }

    @Override
    public String toString() {
        return "Треугольник{" +
                "A=" + a +
                ", B=" + b +
                ", C=" + c +
                '}';
    }

    @Override
    public double getPerimeter() {
        calculateSides();
        double perimeter = sideA + sideB + sideC;
        return perimeter;
    }

    @Override
    public double getArea() {
        calculateSides();
        double halfPerimeter = getPerimeter()/2;
        double area = Math.sqrt(halfPerimeter*(halfPerimeter-sideA)*(halfPerimeter-sideB)*(halfPerimeter-sideC));
        return area;
    }

    private double getLength(Point a, Point b){
        double result = Math.sqrt(Math.pow((b.getX() - a.getX()), 2) + Math.pow((b.getY() - a.getY()), 2));
        return result;
    }

    private void calculateSides(){
        sideA = getLength(a, b);
        sideB = getLength(b, c);
        sideC = getLength(a, c);
    }
}

Класс Rectangle
package org.vitalii;

public class Rectangle extends Shape {
    private Point a;
    private Point b;
    private Point c;
    private Point d;
    private double sideA;
    private double sideB;
    private double sideC;
    private double sideD;

    public Rectangle(Point a, Point b, Point c, Point d) {
        this.a = a;
        this.b = b;
        this.c = c;
        this.d = d;
        calculateSides();
    }

    public Rectangle() {
    }

    public double getSideA() {
        return sideA;
    }

    public double getSideB() {
        return sideB;
    }

    public double getSideC() {
        return sideC;
    }

    public double getSideD() {
        return sideD;
    }

    public Point getA() {
        return a;
    }

    public void setA(Point a) {
        this.a = a;
    }

    public Point getB() {
        return b;
    }

    public void setB(Point b) {
        this.b = b;
    }

    public Point getC() {
        return c;
    }

    public void setC(Point c) {
        this.c = c;
    }

    public Point getD() {
        return d;
    }

    public void setD(Point d) {
        this.d = d;
    }

    @Override
    public String toString() {
        return "Квадрат{" +
                "A=" + a +
                ", B=" + b +
                ", C=" + c +
                ", D=" + d +
                '}';
    }

    @Override
    public double getPerimeter() {
        calculateSides();
        double perimeter = sideA+sideB+sideC+sideD;
        return perimeter;
    }

    @Override
    public double getArea() {
        calculateSides();
        double area = sideA*sideB;
        return area;
    }

    private double getLength(Point a, Point b){
        double result = Math.sqrt(Math.pow((b.getX() - a.getX()), 2) + Math.pow((b.getY() - a.getY()), 2));
        return result;
    }

    private void calculateSides(){
        sideA = getLength(a, b);
        sideB = getLength(b, c);
        sideC = sideA;
        sideD = sideB;
    }
}

Задание 4.
Класс Desk
package org.vitalii;

import java.util.Arrays;

public class Desk {

    private int size;
    private Shape[] shapes;

    public Desk(int size) {
        this.size = size;
        this.shapes = new Shape[size];
    }

    public Desk(){
        this.size = 4;
        this.shapes = new Shape[4];
    }

    public int getSize() {
        return size;
    }

    public void setSize(int size) {
        this.size = size;
    }

    public Shape[] getShapes() {
        return shapes;
    }

    public void setShapes(Shape[] shapes) {
        this.shapes = shapes;
    }

    public void putShape(Shape newShape){
        for(int i=0; i<shapes.length; i++){
            if(shapes[i] == null){
                shapes[i] = newShape;
                return;
            }
        }
        System.out.println("Доска переполнена, уберите одну из фигур!");
    }

    public void deleteShape(Shape shape){
        for(int i=0; i<shapes.length; i++){
            if(shapes[i] == shape){
                shapes[i] = null;
                System.out.println(shape + " был удален с доски");
                return;
            }
        }
        System.out.println("Такой фигуры нету на доске.");
    }

    public double getSumArea(){
        double sum = 0;
        for(int i=0; i<shapes.length; i++){
            if(shapes[i] != null){
                sum += shapes[i].getArea();
            }
        }
        return sum;
    }

    public void listShapes(){
        System.out.println("На доске есть:");
        for(int i=0; i<this.shapes.length; i++){
            if(shapes[i] == null){
                System.out.println("\tНичего");
            }else{
                System.out.println("\t" + shapes[i]);
            }
        }
    }

    @Override
    public String toString() {
        return "Desk{" +
                "size=" + size +
                ", shapes=" + Arrays.toString(shapes) +
                '}';
    }
}

Класс Main
package org.vitalii;

public class Main {

    public static void main(String[] args) {
        Point ra = new Point(1, 1);
        Point rb = new Point(1, 3);
        Point rc = new Point(2, 3);
        Point rd = new Point(2, 1);
        Rectangle rectangle = new Rectangle(ra, rb, rc, rd);

        Point ta = new Point(1, 1);
        Point tb = new Point(2,3);
        Point tc = new Point(3,1);
    Triangle triangle = new Triangle(ta, tb, tc);

        Point ca = new Point(0, 0);
        Point cb = new Point(0,3);
        Circle circle = new Circle(ca, cb);

        Desk desk = new Desk();
        desk.listShapes();
        desk.putShape(circle);
        desk.listShapes();
        desk.putShape(triangle);
        desk.listShapes();
        System.out.println("Суммарная площадь фигур на доске равна: " + desk.getSumArea());
        desk.deleteShape(circle);
        desk.listShapes();
        System.out.println("Суммарная площадь фигур на доске равна: " + desk.getSumArea());
        desk.deleteShape(triangle);
        desk.listShapes();
    }
}

Alexander Ts

  • Преподаватели
  • Пользователи
  • *
  • Сообщений: 14729
    • Просмотр профиля
    • E-mail
Re: Java OOP 27.03.2021 Суббота 15.30-19.30
« Ответ #3 : Апреля 02, 2021, 05:41:07 pm »
Vitalii Moholiuk
Лекция 1.
Задание 4.
Параметром метода исходящий звонок должен быть НОМЕР телефона на который вы совершаете вызов, у вас же:

    public void call(Phone phone){
Метода входящий звонок нет вообще.
Это решение не соответствует условию.

В остальном решение верное

Vladimir2

  • Пользователи
  • *
  • Сообщений: 14
    • Просмотр профиля
Re: Java OOP 27.03.2021 Суббота 15.30-19.30
« Ответ #4 : Апреля 02, 2021, 07:38:34 pm »
package bvg;

public class Dog {
private String name;
private String color;
private boolean sex;
private double year;

public Dog(String name, String color, boolean sex, double year) {
super();
this.name = name;
this.color = color;
this.sex = sex;
this.year = year;
}
public Dog() {
super();
}
public String getName() {
return name;
}

public void setName(String name) {
this.name = name;
}

public String getColor() {
return color;
}

public void setColor(String color) {
this.color = color;
}

public boolean isSex() {
return sex;
}

public void setSex(boolean sex) {
this.sex = sex;
}

public double getYear() {
return year;
}

public void setYear(double year) {
this.year = year;
}

  public void sound(){
        System.out.println("гав гав");
    }
  public void paw(){
        System.out.println("дай лапу");
    }
@Override
public String toString() {
return "Dog [name=" + name + ", color=" + color + ", sex=" + sex + ", year=" + year + "]";
}
 
   
    }

Vladimir2

  • Пользователи
  • *
  • Сообщений: 14
    • Просмотр профиля
Re: Java OOP 27.03.2021 Суббота 15.30-19.30
« Ответ #5 : Апреля 02, 2021, 07:40:02 pm »
[code]
package bvg;

public class Main {

public static void main(String[] args) {
Dog dog = new Dog();
        dog.setName("Паштет");
        dog.setColor("Коричневый");
        dog.setSex(true);
        dog.setYear(2015);
        System.out.println(dog);

        Dog pashtet = new Dog( "Pashtet","Brown", false, 2015);
        System.out.println(pashtet);
}

}

[/code]

Vladimir2

  • Пользователи
  • *
  • Сообщений: 14
    • Просмотр профиля
Re: Java OOP 27.03.2021 Суббота 15.30-19.30
« Ответ #6 : Апреля 02, 2021, 07:41:41 pm »
package bvg;
 
 public class Triangle {
private double a;
private double b;
private double c;

public Triangle(double a, double b, double c) {
super();
this.a = a;
this.b = b;
this.c = c;
}
public Triangle() {
super();
}
public double getA() {
return a;
}
public void setA(double a) {
this.a = a;
}
public double getB() {
return b;
}
public void setB(double b) {
this.b = b;
}
public double getC() {
return c;
}
public void setC(double c) {
this.c = c;
}
  public double calcArea(){
        double p = (a+b+c)/2;

        double s = Math.sqrt(p*(p-a)*(p-b)*(p-c));

        return s;
  }
@Override
public String toString() {
return "Triangle [a=" + a + ", b=" + b + ", c=" + c + "]";
}

}


Vladimir2

  • Пользователи
  • *
  • Сообщений: 14
    • Просмотр профиля
Re: Java OOP 27.03.2021 Суббота 15.30-19.30
« Ответ #7 : Апреля 02, 2021, 07:42:45 pm »
package bvg;

public class Main {

public static void main(String[] args) {

Triangle triangle = new Triangle();
triangle.setA(5);
triangle.setB(5);
triangle.setC(5);
System.out.println(triangle.calcArea());
System.out.println(triangle);

Triangle triangle2 = new Triangle(0.3, 0.4, 0.5);
System.out.println(triangle2.calcArea());
System.out.println(triangle2);
}
}


Vitalii Moholiuk

  • Пользователи
  • *
  • Сообщений: 9
    • Просмотр профиля
    • E-mail
Re: Java OOP 27.03.2021 Суббота 15.30-19.30
« Ответ #8 : Апреля 03, 2021, 12:05:31 am »
Урок 1.
Задание 4.

Сделал метод, который принимает номер телефона, а также методы для принятия и сброса звонка с телефона.

Класс Phone
package org.vitalii;

public class Phone {

    private String number;
    private Network network;
    private boolean isCalled;
    private Phone incomeCall;
    private Phone[] call = new Phone[2];

    public Phone(String number, Network network) {
        this.number = number;
        this.network = network;
        isCalled = false;
        network.addPhone(this);
        call[0] = this;
    }

    public Network getNetwork() {
        return network;
    }

    public void setNetwork(Network network) {
        this.network = network;
    }

    public String getNumber() {
        return number;
    }

    public void setNumber(String number) {
        this.number = number;
    }

    public boolean isCalled() {
        return isCalled;
    }

    public void setCalled(boolean called) {
        isCalled = called;
    }

    @Override
    public String toString() {
        return "Номер " + this.number;
    }

    public void call(String number){
        if(call[1] != null){
            System.out.println("Прежде чем звонить с номера " + this.getNumber() + " закончите на нем звонок!");
            return;
        }
        for(int i=0; i<network.getPhones().length; i++){
            if(network.getPhones()[i] != null && number.equals(network.getPhones()[i].getNumber())){
                System.out.println("Успешно звоним с телефона " + this.getNumber() + " на телефон " + number);
                this.isCalled = true;
                network.getPhones()[i].isCalled = true;
                incomeCall = network.getPhones()[i];
                network.getPhones()[i].incomeCall = this;
                return;
            }
        }
        System.out.println("Номера " + number + " не существует в сети '" + network.getName() + "'");
    }

    public void endCall(){
        if(!isCalled && call[1] == null) {
            System.out.println("Номер " + this.getNumber() + " ни с кем не разговаривает");
        }else if(isCalled && call[1] == null){
            System.out.println("Номер " + this.getNumber() + " сбросил звонок с номером " + incomeCall.getNumber());
            incomeCall.isCalled = false;
            this.isCalled = false;
            incomeCall.isCalled = false;
            this.incomeCall = null;
        }else if(call[1] != null){
            System.out.println("Номер " + this.getNumber() + " закончил разговор с номером " + call[1].getNumber());
            call[1].isCalled = false;
            this.isCalled = false;
            call[1].call[1] = null;
            this.call[1] = null;
            this.incomeCall = null;
        }
    }

    public void acceptCall(){
        if(!isCalled) {
            System.out.println("На номер " + this.getNumber() + " никто не звонит");
        }else if(call[1] != null){
            System.out.println("Номер " + this.getNumber() + " уже с кем-то разговаривает");
        }else if(isCalled && call[1] == null){
            call[1] = incomeCall;
            incomeCall.call[1] = this;
            System.out.println("Номер " + this.getNumber() + " начал разговор с номером " + call[1].getNumber());
        }
    }
}

Класс Main
package org.vitalii;

public class Main {

    public static void main(String[] args) {

        Network vodafone = new Network("Vodafone", 10);
        Network life = new Network("Life", 1);

        System.out.println("\t***Добавление телефонов в сеть***");
        Phone phone = new Phone("0992078025", vodafone);

        Phone anotherPhone = new Phone("0992078025", vodafone);
        anotherPhone = new Phone("0992223333", life);

        Phone iphone = new Phone("0997774444", vodafone);

        System.out.println("\n\t*** Проверка сетей ***");
        System.out.println(vodafone);
        System.out.println(life + "\n");

        System.out.println("\t*** Проверка работоспособности звонков ***");
        phone.endCall();
        phone.acceptCall();

        phone.call("0997774444");
        iphone.endCall();
        iphone.endCall();
        phone.endCall();
        phone.acceptCall();
        iphone.acceptCall();
        iphone.call("0992078025");
        iphone.endCall();
        phone.endCall();
        iphone.call("0992078025");
        phone.acceptCall();
        phone.call("0992223333");
    }
}

Alexander Ts

  • Преподаватели
  • Пользователи
  • *
  • Сообщений: 14729
    • Просмотр профиля
    • E-mail
Re: Java OOP 27.03.2021 Суббота 15.30-19.30
« Ответ #9 : Апреля 04, 2021, 12:27:12 am »
Vladimir2
Решение верное

Vitalii Moholiuk
О вот теперь верно

Vitalii Moholiuk

  • Пользователи
  • *
  • Сообщений: 9
    • Просмотр профиля
    • E-mail
Re: Java OOP 27.03.2021 Суббота 15.30-19.30
« Ответ #10 : Апреля 06, 2021, 07:32:09 pm »
Лекция 3. Полиморфизм и работа с исключениями

В группе люди с разным возрастом для проверки правильности написания "лет"/"год"/"года"

Для сортировки по алфавиту использовал метод пузырьков

Задание 1.
Класс Human
package org.vitalii;

public class Human {

    private String name;
    private String lastName;
    private int age;
    private Gender gender;

    public Human(String name, String lastName, int age, Gender gender) {
        this.name = name;
        this.lastName = lastName;
        this.age = age;
        this.gender = gender;
    }

    public Human() {
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getLastName() {
        return lastName;
    }

    public void setLastName(String lastName) {
        this.lastName = lastName;
    }

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }

    public Gender getGender() {
        return gender;
    }

    public void setGender(Gender gender) {
        this.gender = gender;
    }

    @Override
    public String toString() {
        String ageDesc = "лет";
        char[] ageText = String.valueOf(age).toCharArray();
        if(age == 1 || (ageText[ageText.length-1] == '1' && age > 20)){
            ageDesc = "год";
        }
        if ((ageText[ageText.length-1] == '2' || ageText[ageText.length-1] == '3' || ageText[ageText.length-1] == '4') && (age < 10 || age > 20)) {
            ageDesc = "года";
        }

        String genderDesc = "";
        switch (gender){
            case MAN:
                genderDesc = "мужской";
                break;
            case WOMAN:
                genderDesc = "женский";
                break;
        }
        return name + " " + lastName + ", " + age + " " + ageDesc + ", пол: " + genderDesc;
    }
}

Перечисление Gender
package org.vitalii;

public enum Gender {
    WOMAN, MAN
}

Задание 2.
Класс Student
package org.vitalii;

public class Student extends Human {

    private String id;

    public Student(String name, String lastName, int age, Gender gender, String id) {
        super(name, lastName, age, gender);
        this.id = id;
    }

    public Student() {
    }

    public String getId() {
        return id;
    }

    public void setId(String id) {
        this.id = id;
    }

    @Override
    public String toString() {
        return super.toString() + ", номер зачётки: " + id;
    }
}

Задание 3.
Класс Group
package org.vitalii;

import java.util.Arrays;

public class Group {

    private String name;
    private int capacity;
    private Student[] students;

    public Group(String name, int capacity) {
        this.name = name;
        this.capacity = capacity;
        students = new Student[capacity];
    }

    public int getCapacity() {
        return capacity;
    }

    public void setCapacity(int capacity) {
        this.capacity = capacity;
    }

    public Student[] getStudents() {
        return students;
    }

    public void setStudents(Student[] students) {
        this.students = students;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public void addStudent(Student student){

        if(students[students.length-1] != null){
            throw new GroupOverflowException("В группе может быть только " + capacity + " студентов!");
        }

        if(find(student.getLastName()) == student){
            System.out.println("Этот студент уже есть в группе '" + name + "'");
            return;
        }

        for(int i=0; i<students.length; i++){
            if(students[i] == null){
                students[i] = student;
                System.out.println(students[i] + " - был добавлен в группу '" + name + "'");
                break;
            }
        }
    }

    public boolean remove(String id){
        boolean removed = false;
        for(int i=0; i<students.length; i++){
            if(students[i].getId().equals(id)){
                System.out.println(students[i] + " - был исключен из группы '" + name + "'");
                students[i] = null;
                removed = true;
                break;
            }
        }

        for(int i=0; i<students.length; i++){
            if(students[i] == null){
                for(int j=i; j<students.length; j++){
                    if(students[j] != null){
                        students[i]=students[j];
                        students[j]=null;
                        break;
                    }
                }
            }
        }

        if(!removed){
            System.out.println("Такого студента нету в группе '" + name + "'");
        }

        return removed;
    }

    public Student find(String lastName){
        for(int i=0; i<students.length; i++){
            if(students[i] != null && students[i].getLastName().equals(lastName)){
                return students[i];
            }
        }

        return null;
    }

    @Override
    public String toString() {
        Student temp;
        int count=0;
        for(int j=0; j<students.length; j++) {
            if (students[j] != null) {
                count++;
            }
        }
        Student[] alphabeticStudents = Arrays.copyOfRange(students, 0, count);

        for(int i=0; i<alphabeticStudents.length-1; i++){
            if(alphabeticStudents[i].getLastName().compareTo(alphabeticStudents[i+1].getLastName()) > 0){
                temp = alphabeticStudents[i];
                alphabeticStudents[i] = alphabeticStudents[i+1];
                alphabeticStudents[i+1] = temp;
            }
        }

        System.out.println("Список группы '" + name + "':");
        for(int i=0; i<alphabeticStudents.length; i++){
            System.out.println(i+1 + ". " + alphabeticStudents[i]);
        }
        return "";
    }
}


Исключение GroupOverflowException
package org.vitalii;

public class GroupOverflowException extends RuntimeException {

    public GroupOverflowException() {
        super();
    }

    public GroupOverflowException(String message) {
        super(message);
    }
}

Класс Main
package org.vitalii;

public class Main {

    public static void main(String[] args) {
        Student katya = new Student("Катя", "Сагайдак", 21, Gender.WOMAN, "001");
        Student ihor = new Student("Игор", "Сымони", 3, Gender.MAN, "002");
        Student yarik = new Student("Ярослав", "Мазурец", 1, Gender.MAN, "003");
        Student vladislav = new Student("Владислав", "Д`яконов", 24, Gender.MAN, "004");
        Student vitaliy = new Student("Виталий", "Моголюк", 27, Gender.MAN, "005");
        Student pavel = new Student("Павел", "Левчук", 17, Gender.MAN, "006");
        Student sofiyaP = new Student("София", "Перелом", 30, Gender.WOMAN, "007");
        Student sofiyaK = new Student("София", "Клекоцюк", 34, Gender.WOMAN, "008");
        Student ivanka = new Student("Иванка", "Гнатюк", 23, Gender.WOMAN, "009");
        Student nastya = new Student("Настя", "Лозовицька", 26, Gender.WOMAN, "010");
        Student anton = new Student("Антон", "Липыч", 90, Gender.MAN, "011");
        Group kb = new Group("КБ-12", 10);
        kb.addStudent(katya);
        kb.addStudent(ihor);
        kb.addStudent(yarik);
        kb.addStudent(vladislav);
        kb.addStudent(vitaliy);
        kb.addStudent(pavel);
        kb.addStudent(sofiyaP);
        kb.addStudent(sofiyaK);
        kb.addStudent(ivanka);
        kb.addStudent(nastya);
        System.out.println(kb);
        try{
            kb.addStudent(anton);
        }catch (GroupOverflowException e){
            System.out.println("\t!!!ПРОИЗОШЛО ИСКЛЮЧЕНИЕ!!!\n");
        }
        kb.remove("004");
        kb.addStudent(anton);
        System.out.println(kb);
    }
}
« Последнее редактирование: Апреля 06, 2021, 08:03:23 pm от Vitalii Moholiuk »

Alexander Ts

  • Преподаватели
  • Пользователи
  • *
  • Сообщений: 14729
    • Просмотр профиля
    • E-mail
Re: Java OOP 27.03.2021 Суббота 15.30-19.30
« Ответ #11 : Апреля 07, 2021, 04:34:28 pm »
Vitalii Moholiuk
Все ссылочного типа в Java не сравнивают с помощью == так как этот оператор не сравнивает содержимое он сравнивает, только адреса ссылок, так что такой код неудачен:
        if(find(student.getLastName()) == student){
В остальном решение верное

Vitalii Moholiuk

  • Пользователи
  • *
  • Сообщений: 9
    • Просмотр профиля
    • E-mail
Re: Java OOP 27.03.2021 Суббота 15.30-19.30
« Ответ #12 : Апреля 08, 2021, 07:30:35 pm »
Лекция 4. Интерфейсы

Задание 1 и 4
Класс Group
Здесь и интерактивно можно добавить студента, и реализован метод военком, еще переделан toString() с помощью Comparator. Только вопрос: можно ли как-то компактнее сделать метод военкома? Ведь мы заранее не знаем сколько будет студентов-солдат, следовательно не знаем размер нашего массива и пришлось сделать целых 3 цикла :P
package org.vitalii;

import java.util.Arrays;
import java.util.Comparator;
import java.util.Scanner;

public class Group implements MilitaryCom {

    private String name;
    private int capacity;
    private Student[] students;

    public Group(String name, int capacity) {
        this.name = name;
        this.capacity = capacity;
        students = new Student[capacity];
    }

    public int getCapacity() {
        return capacity;
    }

    public void setCapacity(int capacity) {
        this.capacity = capacity;
    }

    public Student[] getStudents() {
        return students;
    }

    public void setStudents(Student[] students) {
        this.students = students;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public void addStudent(Student student){

        if(students[students.length-1] != null){
            throw new GroupOverflowException("В группе может быть только " + capacity + " студентов!");
        }

        if(find(student.getLastName()) != null && find(student.getLastName()).equals(student)){
            System.out.println("\n" + student + " - уже есть в группе '" + name + "'\n");
            return;
        }

        for(int i=0; i<students.length; i++){
            if(students[i] == null){
                students[i] = student;
                System.out.println("\n" + students[i] + " - был добавлен в группу '" + name + "'\n");
                break;
            }
        }
    }

    public void addStudent(){
        Scanner scanner = new Scanner(System.in);
        System.out.print("Введите имя: ");
        String name = scanner.nextLine();
        System.out.print("Введите фамилию: ");
        String lastName = scanner.nextLine();
        System.out.print("Введите возраст: ");
        int age = scanner.nextInt();
        System.out.print("\t 1. Мужской\n");
        System.out.print("\t 2. Женский\n");
        Gender gender;
        while (true){
            System.out.print("Выберете пол (1 или 2): ");
            int temp = scanner.nextInt();
            if(temp > 0 && temp < 3){
                gender = Gender.setGender(temp);
                break;
            }
        }
        scanner.nextLine();
        System.out.print("Введите номер зачётки: ");
        String id = scanner.nextLine();

        Student student = new Student(name, lastName, age, gender, id);

        addStudent(student);
    }

    public boolean remove(String id){
        boolean removed = false;
        for(int i=0; i<students.length; i++){
            if(students[i].getId().equals(id)){
                System.out.println("\n" + students[i] + " - был исключен из группы '" + name + "'\n");
                students[i] = null;
                removed = true;
                break;
            }
        }

        Arrays.sort(students, Comparator.nullsLast(AnythingSort.NOTHING));

        if(!removed){
            System.out.println("\nСтудента с номером зачётки " + id + " нету в группе '" + name + "'\n");
        }

        return removed;
    }

    public Student find(String lastName){
        for(int i=0; i<students.length; i++){
            if(students[i] != null && students[i].getLastName().equals(lastName)){
                return students[i];
            }
        }

        return null;
    }

    @Override
    public Student[] soldiers() {
        Student[] temp = new Student[capacity];
        for(int i=0; i<students.length; i++){
            if(students[i] != null){
                if(students[i].getGender().equals(Gender.MAN) && students[i].getAge() >= 18){
                    temp[i]=students[i];
                }
            }
        }
        int count=0;
        Arrays.sort(temp, Comparator.nullsLast(AnythingSort.NOTHING));
        for(int i=0; i<temp.length; i++){
            if(temp[i] != null){
                count++;
            }
        }
        Student[] soldiers = new Student[count];
        for(int i=0; i<soldiers.length; i++){
            soldiers[i]=temp[i];
        }
        return soldiers;
    }

    @Override
    public String toString() {
        Arrays.sort(students, Comparator.nullsLast(AnythingSort.ID));
        System.out.println("\nСписок группы '" + name + "':");
        for(int i=0; i<students.length; i++){
            if(students[i] == null){
                break;
            }
            System.out.println(i+1 + ". " + students[i]);
        }
        return "";
    }
}

Задание 2.
Класс LastNameSort
package org.vitalii;

import java.util.Comparator;

public class LastNameSort implements Comparator {
    @Override
    public int compare(Object o1, Object o2) {
        Student one = (Student) o1;
        Student two = (Student) o2;

        return one.getLastName().compareTo(two.getLastName());
    }


}

Задание 3.
Перечисление AnythingSort
package org.vitalii;

import java.util.Comparator;

public enum AnythingSort implements Comparator {

    LASTNAME, NAME, AGE, ID, NOTHING;

    @Override
    public int compare(Object o1, Object o2) {

        Student one = (Student) o1;
        Student two = (Student) o2;

        if(this.equals(AnythingSort.AGE)){
            if(one.getAge() > two.getAge()){
                return 1;
            }else if(one.getAge() < two.getAge()){
                return -1;
            }
        }

        if(this == AnythingSort.LASTNAME){
            return one.getLastName().compareTo(two.getLastName());
        }

        if(this.equals(AnythingSort.NAME)){
            return one.getName().compareTo(two.getName());
        }

        if(this.equals(AnythingSort.ID)){
            return one.getId().compareTo(two.getId());
        }

        if(this.equals(AnythingSort.NOTHING)){
            return 0;
        }

        return 0;
    }
}

Alexander Ts

  • Преподаватели
  • Пользователи
  • *
  • Сообщений: 14729
    • Просмотр профиля
    • E-mail
Re: Java OOP 27.03.2021 Суббота 15.30-19.30
« Ответ #13 : Апреля 09, 2021, 01:10:41 am »
Vitalii Moholiuk
Решение верное.
Насчет сделать короче, то конечно можно же. Это классический двух проходный метод, т. е. Циклов должно быть только два. Например так
@Override
public Student[] getRecruter() {
int n = 0;
for (Student student : studentArray) {
if (student != null && student.isSex() && student.getAge() >= 18) {
n += 1;
}
}
Student[] recrut = new Student[n];
int i = 0;
for (Student student : studentArray) {
if (student != null && student.isSex() && student.getAge() >= 18) {
recrut[i++] = student;
}
}
return recrut;
}

Kravets Vlad

  • Пользователи
  • *
  • Сообщений: 5
    • Просмотр профиля
Re: Java OOP 27.03.2021 Суббота 15.30-19.30
« Ответ #14 : Апреля 10, 2021, 03:36:40 pm »
Введение в ООП
Задание 1
Класс Main

package sample;

public class Main {

public static void main(String[] args) {
Cat cat = new Cat("Vasya", "Black", 10, 7.5);
cat.voice();
System.out.println(cat);
Cat cat1 = new Cat("Bob", "White", 8, 6);
System.out.println(cat1);
cat.setAge(11);
cat1.setWeight(9);
System.out.println(cat);
System.out.println(cat1);
}

}

Класс Cat

package sample;

public class Cat {
String name;
String color;
int age;
double weight;


public Cat(String name, String color, int age, double weight) {
super();
this.name = name;
this.color = color;
this.age = age;
this.weight = weight;
}



public String getName() {
return name;
}



public void setName(String name) {
this.name = name;
}



public String getColor() {
return color;
}



public void setColor(String color) {
this.color = color;
}



public int getAge() {
return age;
}



public void setAge(int age) {
this.age = age;
}



public double getWeight() {
return weight;
}



public void setWeight(double weight) {
this.weight = weight;
}



public void voice() {
System.out.println("Meow");
}


@Override
public String toString() {
return "Cat [name=" + name + ", color=" + color + ", age=" + age + ", weight=" + weight + "]";
}

}

Задание 2
Класс Main

package sample;

public class Main {

public static void main(String[] args) {
Triangle triangle = new Triangle(5, 6, 8);
System.out.println(triangle);
System.out.println("The area of the triangle is: " + triangle.area());
}

}

Класс Triangle

package sample;

public class Triangle {
double sideA;
double sideB;
double sideC;



public Triangle(double sideA, double sideB, double sideC) {
super();
this.sideA = sideA;
this.sideB = sideB;
this.sideC = sideC;
}



public double getSideA() {
return sideA;
}



public void setSideA(double sideA) {
this.sideA = sideA;
}



public double getSideB() {
return sideB;
}



public void setSideB(double sideB) {
this.sideB = sideB;
}



public double getSideC() {
return sideC;
}



public void setSideC(double sideC) {
this.sideC = sideC;
}

public double area() {
double p = (sideA + sideB + sideC) / 2;
double S = Math.sqrt(p * (p - sideA) * (p - sideB) * (p - sideC));
return S;
}



@Override
public String toString() {
return "Triangle [sideA=" + sideA + ", sideB=" + sideB + ", sideC=" + sideC + "]";
}

}

Задание 3
Класс Main

package sample;

public class Main {

public static void main(String[] args) {
Vector3d vector1 = new Vector3d(5, 7 ,9);
Vector3d vector2 = new Vector3d(2, 4, 6);
System.out.println("First vector: " + vector1);
System.out.println("Second vector: " + vector2);
System.out.println(Vector3d.addition(vector1, vector2));
System.out.println(Vector3d.scalarProd(vector1,vector2));
System.out.println(Vector3d.vectorProd(vector1, vector2));
}

}

Класс Vector3d

package sample;

public class Main {

public static void main(String[] args) {
Vector3d vector1 = new Vector3d(5, 7 ,9);
Vector3d vector2 = new Vector3d(2, 4, 6);
System.out.println("First vector: " + vector1);
System.out.println("Second vector: " + vector2);
System.out.println(Vector3d.addition(vector1, vector2));
System.out.println(Vector3d.scalarProd(vector1,vector2));
System.out.println(Vector3d.vectorProd(vector1, vector2));
}

}