• Февраля 25, 2020, 05:06:16 pm
• Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Не получили письмо с кодом активации?
Новости: Вебинар по выбору IT профессии: http://bit.ly/2S4kcC6

Автор Тема: Java_OOP_Alexander_Beresteyka_10_02_2020  (Прочитано 213 раз)

Павел Т.

  • Пользователи
  • *
  • Сообщений: 25
    • Просмотр профиля
Re: Java_OOP_Alexander_Beresteyka_10_02_2020
« Ответ #15 : Февраля 15, 2020, 01:25:48 pm »
Лекция 2. ДЗ

1. Создайте абстрактный класс Shape, в котором есть два абстрактных метода double getPerimetr() и double getArea().
2. Создайте класс Point, в котором есть два свойства double x, double y.
3. Создайте классы, которые описывают, как минимум, три геометрические фигуры (они должны быть подклассами Shape). При этом они в качестве свойств должны содержать классы Point.
4. Создайте класс доска. Доска поделена на 4 части в каждую часть доски можно положить одну из фигур. У доски должны быть методы которые помещают и удаляют фигуру с доски. Также должен быть метод который выводит информацию о всех фигурах лежащих на доске и их суммарную площадь.
5. * Нарисуйте UML диаграмму проекта.

https://github.com/VinnieJ-2k20/Homework2

Возник вопрос по UML диаграмме. Отношение между классом "Точка" и классами различных фигур "Круг", "Квадрат" и т.д. Правильно ли я понимаю, что если отдельные фигуры инициализированы таким образом, то это Композиция, т.к. при уничтожении circ1 точки тоже будут уничтожены. Если бы точки были инициализированы отдельно, то это была бы Агрегация?
Circle circ1 = new Circle(new Point(0, 0), new Point(0, 4));

Alexander Ts

  • Преподаватели
  • Пользователи
  • *
  • Сообщений: 13232
    • Просмотр профиля
    • E-mail
Re: Java_OOP_Alexander_Beresteyka_10_02_2020
« Ответ #16 : Февраля 15, 2020, 08:35:31 pm »
Павел Т.
Для класса методы equals и hashCOde — не переопределенны. Поэтому использование для их хранения ArrayList довольно грубая ошибка. Такие строки кода неудачны:
private ArrayList<Phone> regNumbers;
Так же рекомендуется при работе с контейнерами использовать ссылку типа интерфейс а не реализация поэтому, эта же строка дважды неудачна.

Лекция 2.
Решение верное.
По UML диаграммам. Тут не как идея в способе создания. Это отношение между модельным представлением. Точки могут существовать вне треугольника? Да. Так, что таки агрегация.

Y.Pelykh

  • Пользователи
  • *
  • Сообщений: 20
    • Просмотр профиля
    • E-mail
Re: Java_OOP_Alexander_Beresteyka_10_02_2020
« Ответ #17 : Февраля 15, 2020, 09:23:31 pm »
Yurii Pelykh
Параметром метода исходящий звонок должен быть НОМЕР. У вас же:
        public void call(Phone dstPhone) {Вы ведь не звоните на NOKIA 3310 вы звоните на НОМЕР. Так, что ваше решение не соответствует условию.

package com.gmail.yuriypelykh;

import com.gmail.yuriypelykh.Network;

public class Phone {

private String number;
private double balance;
private Network network;

public Phone() {

}

public Phone(String number, double balance, Network network) {
super();
this.number = number;
this.balance = balance;
this.network = network;
}

public Phone(String number, double balance) {
super();
this.number = number;
this.balance = balance;
}

public String getNumber() {
return number;
}

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

public double getBalance() {
return balance;
}

public void setBalance(double balance) {
this.balance = balance;
}

public Network getNetwork() {
return network;
}

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

public void regInNetwork(Network net) {
if (net.setRegistration(this) == 1) {
this.network = net;
}
}

public void call(String dstNumber) {
int numAvail = 0;
for (int i = 0; i < this.network.getRegistrations().length; i++) {
if (this.network.getRegistrations()[i] != null) {
if (dstNumber == this.network.getRegistrations()[i].getNumber()) {
System.out.println("Calling to " + dstNumber + " in progress...");
this.network.getRegistrations()[i].incomingCall(this.number);
numAvail = 1;
break;
}
}
}
if (numAvail == 0) {
System.out.println(dstNumber + " cannot be reached at the moment, please try again later");
}
}

public void incomingCall(String srcNumber) {
System.out.println("\nIncoming call from " + srcNumber);
}

@Override
public String toString() {
return ("\nnumber = " + number + "\nbalance = " + balance + "\nnetwork = " + network + "\n");
}

}

package com.gmail.yuriypelykh;

public class Network {

private String name;
private Phone[] registrations = new Phone[1000];

public Network() {

}

public Network(String name) {
super();
this.name = name;
}

public Network(String name, Phone[] registrations) {
super();
this.name = name;
this.registrations = registrations;
}

public String getName() {
return name;
}

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

public Phone[] getRegistrations() {
return registrations;
}

public void setRegistrations(Phone[] registrations) {
this.registrations = registrations;
}

public int setRegistration(Phone phoneObj) {
for (int i = 0; i < registrations.length; i++) {
if (registrations[i] == phoneObj) {
return 1;
}
}
for (int i = 0; i < registrations.length; i++) {
if (registrations[i] == null) {
registrations[i] = phoneObj;
return 1;
}
}
return -1;
}

@Override
public String toString() {
return this.name;
}

}

package com.gmail.yuriypelykh;

public class Main {

public static void main(String[] args) {

Phone phone1 = new Phone("0971530480", 54.25);
Phone phone2 = new Phone("0969031205", 14.12);
Phone phone3 = new Phone("0671123456", 23.12);

Network net1 = new Network("net1");

phone1.regInNetwork(net1);
phone2.regInNetwork(net1);

System.out.println(phone1);
System.out.println(phone2);
phone1.call(phone2.getNumber());

System.out.println(phone3);
phone1.call(phone3.getNumber());

}

}


Лекція 2

1. Создайте абстрактный класс Shape, в котором есть два абстрактных метода double getPerimetr() и double getArea().
2. Создайте класс Point, в котором есть два свойства double x double y.
3. Создайте классы, которые описывают, как минимум, три геометрические фигуры (они должны быть подклассами Shape). При этом они в качестве свойств должны содержать классы Point.
4. Создайте класс доска. Доска поделена на 4 части в каждую часть доски можно положить одну из фигур. У доски должны быть методы которые помещают и удаляют фигуру с доски. Также должен быть метод который выводит информацию о всех фигурах лежащих на доске и их суммарную площадь.
5. * Нарисуйте UML диаграмму проекта.

package com.gmail.yuriypelykh;

public abstract class Shape {

abstract double getPerimetr();

abstract double getArea();

}

package com.gmail.yuriypelykh;

public class Point {

private double x;
private double y;

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

public Point() {
super();
}

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 + "; " + y + ")";
}

}

package com.gmail.yuriypelykh;

public class Triangle extends Shape {

private Point pA = new Point();
private Point pB = new Point();
private Point pC = new Point();

public Triangle(Point pA, Point pB, Point pC) {
super();
this.pA = pA;
this.pB = pB;
this.pC = pC;
}

public Point getpA() {
return pA;
}

public void setpA(Point pA) {
this.pA = pA;
}

public Point getpB() {
return pB;
}

public void setpB(Point pB) {
this.pB = pB;
}

public Point getpC() {
return pC;
}

public void setpC(Point pC) {
this.pC = pC;
}

public double sideLength(Point pA, Point pB) {
return Math.sqrt(Math.pow(pB.getX()-pA.getX(), 2) + Math.pow(pB.getY()-pA.getY(), 2));
}

@Override
double getPerimetr() {
double sAB = sideLength(pA, pB);
double sBC = sideLength(pB, pC);
double sAC = sideLength(pA, pC);
return sAB + sBC + sAC;
}

@Override
double getArea() {
return (0.5 * Math.abs(
(pB.getX() - pA.getX()) * (pC.getY() - pA.getY()) - (pC.getX() - pA.getX()) * (pB.getY() - pA.getY())));
}

@Override
public String toString() {
return "Triangle [pA=" + pA + ", pB=" + pB + ", pC=" + pC + "]";
}


}

package com.gmail.yuriypelykh;

public class Circle extends Shape {

private Point pO = new Point();
private Point pR = new Point();

public Circle() {
super();
}

public Circle(Point pO, Point pR) {
super();
this.pO = pO;
this.pR = pR;
}

public Point getpO() {
return pO;
}

public void setpO(Point pO) {
this.pO = pO;
}

public Point getpR() {
return pR;
}

public void setpR(Point pR) {
this.pR = pR;
}

public double radius(Point pO, Point pR) {
return Math.sqrt(Math.pow(pR.getX() - pO.getX(), 2) + Math.pow(pR.getY() - pO.getY(), 2));
}

@Override
double getPerimetr() {
return 2 * Math.PI * radius(pO, pR);
}

@Override
double getArea() {
return Math.PI * Math.pow(radius(pO, pR), 2);
}

@Override
public String toString() {
return "Circle [center=" + pO + ", radius=" + radius(pO, pR) + "]";
}

}

package com.gmail.yuriypelykh;

public class Square extends Shape {

private Point pA = new Point();
private Point pB = new Point();
private Point pC = new Point();
private Point pD = new Point();

public Square() {
super();
}

public Square(Point pA, Point pB, Point pC, Point pD) {
super();
this.pA = pA;
this.pB = pB;
this.pC = pC;
this.pD = pD;
}

public Point getpA() {
return pA;
}

public void setpA(Point pA) {
this.pA = pA;
}

public Point getpB() {
return pB;
}

public void setpB(Point pB) {
this.pB = pB;
}

public Point getpC() {
return pC;
}

public void setpC(Point pC) {
this.pC = pC;
}

public Point getpD() {
return pD;
}

public void setpD(Point pD) {
this.pD = pD;
}

public double sideLength(Point pA, Point pB) {
return Math.sqrt(Math.pow(pB.getX() - pA.getX(), 2) + Math.pow(pB.getY() - pA.getY(), 2));
}

@Override
double getPerimetr() {
double sAB = sideLength(pA, pB);
return 4 * sAB;
}

@Override
double getArea() {
double sAB = sideLength(pA, pB);
return Math.pow(sAB, 2);
}

@Override
public String toString() {
return "Square [pA=" + pA + ", pB=" + pB + ", pC=" + pC + ", pD=" + pD + "]";
}

}

package com.gmail.yuriypelykh;

import java.util.Arrays;

public class Board {

private Shape[] sp = new Shape[4];

public Board() {
super();
}

public Board(Shape[] sp) {
super();
this.sp = sp;
}

public Shape[] getSp() {
return sp;
}

public void setSp(Shape[] sp) {
this.sp = sp;
}

public void putFig(Shape shape) {
int freePlace = -1;
for (int i = 0; i < sp.length; i++) {
if (sp[i] == null) {
sp[i] = shape;
freePlace = 1;
break;
}
}
if (freePlace == -1) {
System.out.println("No place for your figure on the board");
} else if (freePlace == 1) {
System.out.println("Figure placed successfully");
}
}

public void rmFig(Shape shape) {
int freePlace = -1;
for (int i = 0; i < sp.length; i++) {
if (sp[i] == shape) {
sp[i] = null;
freePlace = 1;
break;
}
}
if (freePlace == -1) {
System.out.println("No such figure on the board");
} else if (freePlace == 1) {
System.out.println("Figure removed successfully");
}
}

public void showBoard() {
System.out.println("\nFigures on board:");
double area = 0;
for (int i = 0; i < this.sp.length; i++) {
if (sp[i] != null) {
System.out.println(sp[i]);
area += sp[i].getArea();
}
}
System.out.println("Summary area of placed figures: " + area + " cm^2\n");

}

@Override
public String toString() {
return "Board [sp=" + Arrays.toString(sp) + "]";
}

}

package com.gmail.yuriypelykh;

public class Main {

public static void main(String[] args) {

Point pA = new Point(0, 0);
Point pB = new Point(0, 3);
Point pC = new Point(3, 0);
Point pD = new Point(3, 3);

Triangle triangle1 = new Triangle(pA, pB, pC);
Circle circle1 = new Circle(pA, pB);
Square square1 = new Square(pA, pB, pC, pD);
Circle circle2 = new Circle(pC, pD);

Board bd1 = new Board();

bd1.putFig(triangle1);
bd1.putFig(circle1);
bd1.putFig(square1);
bd1.putFig(circle2);
bd1.showBoard();

bd1.rmFig(circle2);
bd1.showBoard();

}

}



natalie.syrota

  • Пользователи
  • *
  • Сообщений: 38
    • Просмотр профиля
    • E-mail
Re: Java_OOP_Alexander_Beresteyka_10_02_2020
« Ответ #18 : Февраля 16, 2020, 01:19:11 am »
1. Создайте абстрактный класс Shape, в котором есть два
абстрактных метода double getPerimetr() и double getArea().
2. Создайте класс Point, в котором есть два свойства double x
double y.
3. Создайте классы, которые описывают, как минимум, три
геометрические фигуры (они должны быть подклассами
Shape). При этом они в качестве свойств должны содержать
классы Point.
package com.gmail.sna;

public abstract class Shape {

abstract double calculatePerimetr();
abstract double calculateArea();
}

package com.gmail.sna;

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

public Point() {
}

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

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 "Point [x=" + x + ", y=" + y + "]";
}
}

package com.gmail.sna;

public class Triangle extends Shape {
private Point p1;
private Point p2;
private Point p3;

Triangle() {
}

public Triangle(Point p1, Point p2, Point p3) {
super();
this.p1 = p1;
this.p2 = p2;
this.p3 = p3;
}


public Point getP1() {
return p1;
}

public void setP1(Point p1) {
this.p1 = p1;
}

public Point getP2() {
return p2;
}

public void setP2(Point p2) {
this.p2 = p2;
}

public Point getP3() {
return p3;
}

public void setP3(Point p3) {
this.p3 = p3;
}

Point point1 = new Point(2.1, 4.7);
Point point2 = new Point(-8.5, 9.4);
Point point3 = new Point(4.6, -2.2);

@Override
public double calculatePerimetr() {
double side1 = Math
.sqrt(Math.pow((point1.getX() - point2.getX()), 2) + Math.pow((point1.getY() - point2.getY()), 2));
double side2 = Math
.sqrt(Math.pow((point2.getX() - point3.getX()), 2) + Math.pow((point2.getY() - point3.getY()), 2));
double side3 = Math
.sqrt(Math.pow((point1.getX() - point3.getX()), 2) + Math.pow((point1.getY() - point3.getY()), 2));
return side1 + side2 + side3;
}

@Override
public double calculateArea() {
double side1 = Math
.sqrt(Math.pow((point1.getX() - point2.getX()), 2) + Math.pow((point1.getY() - point2.getY()), 2));
double side2 = Math
.sqrt(Math.pow((point2.getX() - point3.getX()), 2) + Math.pow((point2.getY() - point3.getY()), 2));
double side3 = Math
.sqrt(Math.pow((point1.getX() - point3.getX()), 2) + Math.pow((point1.getY() - point3.getY()), 2));
double polP = (side1 + side2 + side3) / 2;
return Math.sqrt(polP * (polP - side1) * (polP - side2) * (polP - side3));
}

@Override
public String toString() {
return "Triangle [p1=" + p1 + ", p2=" + p2 + ", p3=" + p3 + "]";
}
}

package com.gmail.sna;

public class Circle extends Shape {
private Point p1;
private Point p2;

Circle() {
}

public Circle(Point p1, Point p2) {
super();
this.p1 = p1;
this.p2 = p2;
}

public Point getP1() {
return p1;
}

public void setP1(Point p1) {
this.p1 = p1;
}

public Point getP2() {
return p2;
}

public void setP2(Point p2) {
this.p2 = p2;
}

Point point1 = new Point(9.1, 4.8);
Point point2 = new Point(-2.9, -8.3);

public double calculatePerimetr() {
double rad = Math
.sqrt(Math.pow((point1.getX() - point2.getX()), 2) + Math.pow((point1.getY() - point2.getY()), 2));
return Math.PI * rad * rad;
}

public double calculateArea() {
double rad = Math
.sqrt(Math.pow((point1.getX() - point2.getX()), 2) + Math.pow((point1.getY() - point2.getY()), 2));
return 2 * Math.PI * rad;
}

@Override
public String toString() {
return "Circle [p1=" + p1 + ", p2=" + p2 + "]";
}
}

Павел Т.

  • Пользователи
  • *
  • Сообщений: 25
    • Просмотр профиля
Re: Java_OOP_Alexander_Beresteyka_10_02_2020
« Ответ #19 : Февраля 16, 2020, 02:00:57 am »
Лекция 1. ДЗ
Задача 4. Сеть и телефоны
Убрал использование ArrayList, приделал ручное изменение размеров базы телефонов через массивы.
https://github.com/VinnieJ-2k20/Homework14

Лекция 2. ДЗ. Доска и фигуры
Добавил UML-диаграмму проекта.
https://github.com/VinnieJ-2k20/Homework2/blob/master/Homework2.jpg

Alexander Ts

  • Преподаватели
  • Пользователи
  • *
  • Сообщений: 13232
    • Просмотр профиля
    • E-mail
Re: Java_OOP_Alexander_Beresteyka_10_02_2020
« Ответ #20 : Февраля 16, 2020, 04:34:33 pm »
Yurii Pelykh
Решение верное

Natalie.syrota
Класс треугольник. Как то странно вы его сделали. Поля в виде точек есть:

public class Triangle extends Shape {
        private Point p1;
        private Point p2;
        private Point p3;

Но при вычислении сторон вы их не используете:

public double calculatePerimetr() {
                double side1 = Math
                                .sqrt(Math.pow((point1.getX() - point2.getX()), 2) + Math.pow((point1.getY() - point2.getY()), 2));
                double side2 = Math
                                .sqrt(Math.pow((point2.getX() - point3.getX()), 2) + Math.pow((point2.getY() - point3.getY()), 2));
                double side3 = Math
                                .sqrt(Math.pow((point1.getX() - point3.getX()), 2) + Math.pow((point1.getY() - point3.getY()), 2));
                return side1 + side2 + side3;
        }

Вместо них вы используете какие то странные открытые поля которые даже нельзя изменить
        Point point1 = new Point(2.1, 4.7);
        Point point2 = new Point(-8.5, 9.4);
        Point point3 = new Point(4.6, -2.2);

Это же касается и другого класса. Такое решение противоречивое и ошибочное.


Павел Т.
Решение верное

natalie.syrota

  • Пользователи
  • *
  • Сообщений: 38
    • Просмотр профиля
    • E-mail
Re: Java_OOP_Alexander_Beresteyka_10_02_2020
« Ответ #21 : Февраля 16, 2020, 11:41:48 pm »
package com.gmail.sna;

public abstract class Shape {

abstract double calculatePerimetr();
abstract double calculateArea();
}


package com.gmail.sna;

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

public Point() {
}

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

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 "Point [x=" + x + ", y=" + y + "]";
}
}

package com.gmail.sna;

public class Triangle extends Shape {
private Point p1;
private Point p2;
private Point p3;

Triangle() {
}

public Triangle(Point p1, Point p2, Point p3) {
super();
this.p1 = p1;
this.p2 = p2;
this.p3 = p3;
}


public Point getP1() {
return p1;
}

public void setP1(Point p1) {
this.p1 = p1;
}

public Point getP2() {
return p2;
}

public void setP2(Point p2) {
this.p2 = p2;
}

public Point getP3() {
return p3;
}

public void setP3(Point p3) {
this.p3 = p3;
}

@Override
public double calculatePerimetr() {
double side1 = Math
.sqrt(Math.pow((p1.getX() - p2.getX()), 2) + Math.pow((p1.getY() - p2.getY()), 2));
double side2 = Math
.sqrt(Math.pow((p2.getX() - p3.getX()), 2) + Math.pow((p2.getY() - p3.getY()), 2));
double side3 = Math
.sqrt(Math.pow((p1.getX() - p3.getX()), 2) + Math.pow((p1.getY() - p3.getY()), 2));
return side1 + side2 + side3;
}

@Override
public double calculateArea() {
double side1 = Math
.sqrt(Math.pow((p1.getX() - p2.getX()), 2) + Math.pow((p1.getY() - p2.getY()), 2));
double side2 = Math
.sqrt(Math.pow((p2.getX() - p3.getX()), 2) + Math.pow((p2.getY() - p3.getY()), 2));
double side3 = Math
.sqrt(Math.pow((p1.getX() - p3.getX()), 2) + Math.pow((p1.getY() - p3.getY()), 2));
double polP = (side1 + side2 + side3) / 2;
return Math.sqrt(polP * (polP - side1) * (polP - side2) * (polP - side3));
}

@Override
public String toString() {
return "Triangle [p1=" + p1 + ", p2=" + p2 + ", p3=" + p3 + "]";
}
}


package com.gmail.sna;

public class Circle extends Shape {
private Point p1;
private Point p2;

Circle() {
}

public Circle(Point p1, Point p2) {
super();
this.p1 = p1;
this.p2 = p2;
}

public Point getP1() {
return p1;
}

public void setP1(Point p1) {
this.p1 = p1;
}

public Point getP2() {
return p2;
}

public void setP2(Point p2) {
this.p2 = p2;
}

@Override
public double calculatePerimetr() {
double rad = Math.sqrt(Math.pow((p1.getX() - p2.getX()), 2) + Math.pow((p1.getY() - p2.getY()), 2));
return 2 * Math.PI * rad;
}

@Override
public double calculateArea() {
double rad = Math.sqrt(Math.pow((p1.getX() - p2.getX()), 2) + Math.pow((p1.getY() - p2.getY()), 2));
return Math.PI * rad * rad;
}

@Override
public String toString() {
return "Circle [p1=" + p1 + ", p2=" + p2 + "]";
}
}


package com.gmail.sna;

public class Rectangle extends Shape {
private Point p1;
private Point p2;
private Point p3;

Rectangle() {
}

public Rectangle(Point p1, Point p2, Point p3) {
super();
this.p1 = p1;
this.p2 = p2;
this.p3 = p3;
}

public Point getP1() {
return p1;
}

public void setP1(Point p1) {
this.p1 = p1;
}

public Point getP2() {
return p2;
}

public void setP2(Point p2) {
this.p2 = p2;
}

public Point getP3() {
return p3;
}

public void setP3(Point p3) {
this.p3 = p3;
}

@Override
public double calculatePerimetr() {
double side1 = Math.sqrt(Math.pow((p1.getX() - p2.getX()), 2) + Math.pow((p1.getY() - p2.getY()), 2));
double side2 = Math.sqrt(Math.pow((p2.getX() - p3.getX()), 2) + Math.pow((p2.getY() - p3.getY()), 2));
return (side1 + side2) * 2;
}

@Override
public double calculateArea() {
double side1 = Math.sqrt(Math.pow((p1.getX() - p2.getX()), 2) + Math.pow((p1.getY() - p2.getY()), 2));
double side2 = Math.sqrt(Math.pow((p2.getX() - p3.getX()), 2) + Math.pow((p2.getY() - p3.getY()), 2));
return side1 * side2;
}

@Override
public String toString() {
return "Rectangle [p1=" + p1 + ", p2=" + p2 + ", p3=" + p3 + "]";
}
}


Alexander Ts

  • Преподаватели
  • Пользователи
  • *
  • Сообщений: 13232
    • Просмотр профиля
    • E-mail
Re: Java_OOP_Alexander_Beresteyka_10_02_2020
« Ответ #22 : Февраля 17, 2020, 10:07:21 am »

Alexander Ts

  • Преподаватели
  • Пользователи
  • *
  • Сообщений: 13232
    • Просмотр профиля
    • E-mail
Re: Java_OOP_Alexander_Beresteyka_10_02_2020
« Ответ #23 : Февраля 17, 2020, 02:23:06 pm »
Natalie.syrota

Решение верное

Павел Т.

  • Пользователи
  • *
  • Сообщений: 25
    • Просмотр профиля
Re: Java_OOP_Alexander_Beresteyka_10_02_2020
« Ответ #24 : Февраля 18, 2020, 04:45:40 pm »
Лекция 3. ДЗ. Группа студентов

1) Создайте класс, описывающий человека (создайте метод, выводящий информацию о человеке).
2) На его основе создайте класс студент (переопределите метод вывода информации).
3) Создайте класс Группа, который содержит массив из 10 объектов класса Студент. Реализуйте методы добавления, удаления студента и метод поиска студента по фамилии. В случае попытки добавления 11 студента, создайте собственное исключение и обработайте его. Определите метод toString() для группы так, что бы он выводил список студентов в алфавитном порядке.
4) * Нарисуйте UML диаграмму проекта.

https://github.com/VinnieJ-2k20/Homework3

Y.Pelykh

  • Пользователи
  • *
  • Сообщений: 20
    • Просмотр профиля
    • E-mail
Re: Java_OOP_Alexander_Beresteyka_10_02_2020
« Ответ #25 : Февраля 18, 2020, 11:01:51 pm »
Лекція 3

1) Создайте класс, описывающий человека (создайте метод, выводящий информацию о человеке).
2) На его основе создайте класс студент (переопределите метод вывода информации).
3) Создайте класс Группа, который содержит массив из 10 объектов класса Студент. Реализуйте методы добавления,
удаления студента и метод поиска студента по фамилии. В случае попытки добавления 11 студента, создайте собственное исключение и обработайте его.

package com.gmail.yuriypelykh;

public class Human {

private String name;
private String surname;
private int age;

public Human(String name, String surname, int age) {
super();
this.name = name;
this.surname = surname;
this.age = age;
}

public String getName() {
return name;
}

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

public String getSurname() {
return surname;
}

public void setSurname(String surname) {
this.surname = surname;
}

public int getAge() {
return age;
}

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

@Override
public String toString() {
return surname + " " + name + ", Age " + age;
}

}

package com.gmail.yuriypelykh;

public class Student extends Human {

private String faculty;
private String group;

public Student(String name, String surname, int age, String faculty, String group) {
super(name, surname, age);
this.faculty = faculty;
this.group = group;
}

public Student(String name, String surname, int age, String faculty) {
super(name, surname, age);
this.faculty = faculty;
}

public String getFaculty() {
return faculty;
}

public void setFaculty(String faculty) {
this.faculty = faculty;
}

public String getGroup() {
return group;
}

public void setGroup(String group) {
this.group = group;
}

@Override
public String toString() {
return super.toString() + ", " + faculty;
}

}

package com.gmail.yuriypelykh;

import java.util.Arrays;

import com.gmail.yuriypelykh.exception.ParticipantsLimitException;

public class Group {

private String name;
private Student[] group = new Student[10];

public Group(String name) {
super();
this.name = name;
}

public Group(String name, Student[] group) {
super();
this.name = name;
this.group = group;
}

public String getName() {
return name;
}

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

public Student[] getGroup() {
return group;
}

public void setGroup(Student[] group) {
this.group = group;
}

public void addStudent(Student student) throws ParticipantsLimitException {
int added = 0;
for (int i = 0; i < group.length; i++) {
if (group[i] == null) {
group[i] = student;
student.setGroup(this.getName());
added = 1;
System.out.println("Student " + student.getName() + " " + student.getSurname() + " added to group "
+ this.getName());
break;
}
}
if (added == 0)
throw new ParticipantsLimitException();
}

public void rmStudent(Student student) {
int removed = 0;
for (int i = 0; i < group.length; i++) {
if (group[i] == student) {
group[i] = null;
removed = 1;
break;
}
}
if (removed == 0) {
System.out.println("No such student in the group");
} else if (removed == 1) {
System.out.println("Student " + student.getName() + " " + student.getSurname() + " removed from group "
+ this.getName());
}
}

public Student findStudent(String surname) {
for (int i = 0; i < this.group.length; i++) {
if (this.group[i] == null) {
continue;
}
if (surname.equals(this.group[i].getSurname())) {
return this.group[i];
}
}
return null;
}

@Override
public String toString() {
return "Group [name=" + name + ", group=" + Arrays.toString(group) + "]";
}

}

package com.gmail.yuriypelykh.exception;

public class ParticipantsLimitException extends Exception{

@Override
public String getMessage(){
return "\nImpossible to add student. Group is full\n";
}
}

Alexander Ts

  • Преподаватели
  • Пользователи
  • *
  • Сообщений: 13232
    • Просмотр профиля
    • E-mail
Re: Java_OOP_Alexander_Beresteyka_10_02_2020
« Ответ #26 : Февраля 19, 2020, 12:38:04 am »
Павел Т.
Решение верное

Yurii Pelykh
Ссылочные тпы данных не сравнивают с помощью оператора ==. Так, что такой код неудачен:
                        if (group[i] == student) {В остальном решение верное

Alexander Ts

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

Y.Pelykh

  • Пользователи
  • *
  • Сообщений: 20
    • Просмотр профиля
    • E-mail
Re: Java_OOP_Alexander_Beresteyka_10_02_2020
« Ответ #28 : Февраля 21, 2020, 08:42:12 pm »
Лекція 4

1. Усовершенствуйте класс Group, добавив возможность интерактивного добавления объекта.
2. Реализуйте возможность сортировки списка студентов по фамилии.
3. Реализуйте возможность сортировки по параметру (Фамилия, успеваемость и т. д.).
4. Реализуйте интерфейс Военком, который вернет из группы массив студентов - юношей, которым больше 18 лет.
5. Протестируйте его работу.

https://github.com/YuriyPelykh/OopHw4ex1.1-5

Павел Т.

  • Пользователи
  • *
  • Сообщений: 25
    • Просмотр профиля
Re: Java_OOP_Alexander_Beresteyka_10_02_2020
« Ответ #29 : Февраля 22, 2020, 02:06:29 pm »
Лекция 4. ДЗ. Группа студентов - Военком, сортировка, интерактивный ввод.

1. Усовершенствуйте класс Group, добавив возможность интерактивного добавления объекта.
2. Реализуйте возможность сортировки списка студентов по фамилии.
3. Реализуйте возможность сортировки по параметру (Фамилия, успеваемость и т. д.).
4. Реализуйте интерфейс Военком, который вернет из группы массив студентов - юношей, которым больше 18 лет.
5. Протестируйте его работу.

https://github.com/VinnieJ-2k20/Homework3