Курсы программирования

Программирование => Java SE => Тема начата: Alexander Ts от Февраля 10, 2020, 10:14:37 am

Название: Java_OOP_Alexander_Beresteyka_10_02_2020
Отправлено: Alexander Ts от Февраля 10, 2020, 10:14:37 am
Wellcome
Название: Re: Java_OOP_Alexander_Beresteyka_10_02_2020
Отправлено: Y.Pelykh от Февраля 10, 2020, 10:27:02 pm
Лекція 1

1) Описать класс «Cat» (в качестве образца можно взять домашнего питомца). Наделить его свойствами и методами. Создать несколько экземпляров объектов этого класса. Использовать эти объекты.

package com.gmail.yuriypelykh;

public class Cat {

private String name;
private String gender;
private String color;
private int age;
private double weight;

public Cat() {

}

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

}

public String getName() {
return name;
}

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

public String getGender() {
return gender;
}

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

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;
}

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

}

package com.gmail.yuriypelykh;

public class Main {

public static void main(String[] args) {

Cat cat1 = new Cat("Tom", "male", "Brown", 4, 4.0);
Cat cat2 = new Cat("Trixy", "female", "Black", 3, 3.5);
Cat cat3 = new Cat("Bob", "male", "White", 6, 12.0);

Cat fatCat = mostFat(cat1, cat2, cat3);

System.out.println("Most fat cat is " + fatCat.getName());
System.out.println();
System.out.println("Color: " + fatCat.getColor());
System.out.println("Gender: " + fatCat.getGender());
System.out.println("Weight: " + fatCat.getWeight() + " kg");
System.out.println("Age : " + fatCat.getAge() + " year(s)");

}

public static Cat mostFat(Cat cat1, Cat cat2, Cat cat3) {
Cat fatest = cat1;
if (cat2.getWeight() > cat1.getWeight()) {
fatest = cat2;
}
if (cat3.getWeight() > cat2.getWeight()) {
fatest = cat3;
}
return fatest;
}

}

2) Описать класс «Triangle». В качестве свойств возьмите длины сторон треугольника. Реализуйте метод, который будет возвращать площадь этого треугольника. Создайте несколько объектов этого класса и протестируйте их.

package com.gmail.yuriypelykh;

public class Triangle {

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

public Triangle() {

}

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

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 = 0.5 * (a + b + c);
double area = Math.sqrt(p * (p - a) * (p - b) * (p - c));
return area;
}

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

}

package com.gmail.yuriypelykh;

public class Main {

public static void main(String[] args) {

Triangle triangle1 = new Triangle(3, 4, 5);
Triangle triangle2 = new Triangle(8, 5, 7);

System.out.println("Triangle 1 area equals to: " + triangle1.calcArea() + " cm^2");
System.out.println("Triangle 2 area equals to: " + triangle2.calcArea() + " cm^2");

}

}

3) Описать класс «Vector3d» (т. е., он должен описывать вектор в трехмерной, декартовой системе координат). В качестве свойств этого класса возьмите координаты вектора. Для этого класса реализовать методы сложения, скалярного и векторного произведения векторов. Создайте несколько объектов этого класса и протестируйте их.

package com.gmail.yuriypelykh;

public class Vector3d {

private double x;
private double y;
private double z;

public Vector3d() {

}

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

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;
}

public double getZ() {
return z;
}

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

public String vectorAddition(double x, double y, double z) {
String ad = "(" + this.x + x + "; " + this.y + y + "; " + this.z + z + ")";
return ad;
}

public String vectorAddition(Vector3d b) {
String ad = "(" + (this.x + b.getX()) + "; " + (this.y + b.getY()) + "; " + (this.z + b.getZ()) + ")";
return ad;
}

public double scalarProduct(double x, double y, double z) {
double sm = this.x * x + this.y * y + this.z * z;
return sm;
}

public double scalarProduct(Vector3d b) {
double sm = this.x * b.getX() + this.y * b.getY() + this.z * b.getZ();
return sm;
}

public String vectorProduct(double x, double y, double z) {
String vp = "(" + (this.y * z - this.z * y) + "*i " + (this.z * x - this.x * z) + "*j"
+ (this.x * y + this.y * x) + "*k)";
return vp;
}

public String vectorProduct(Vector3d b) {
String vp = "(" + (this.y * b.getZ() - this.z * b.getY()) + ")*i + (" + (this.z * b.getX() - this.x * b.getZ())
+ ")*j + (" + (this.x * b.getY() + this.y * b.getX()) + ")*k";
return vp;
}

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

}

package com.gmail.yuriypelykh;

public class Main {

public static void main(String[] args) {

Vector3d a = new Vector3d(3,4,5);
Vector3d b = new Vector3d(2,-3,4);

System.out.println("Vector a and b addition: " + a.vectorAddition(b));
System.out.println("Scalar product of a and b: " + b.scalarProduct(a));
System.out.println("Vector product of a and b: " + a.vectorProduct(b));

}

}
Название: Re: Java_OOP_Alexander_Beresteyka_10_02_2020
Отправлено: natalie.syrota от Февраля 10, 2020, 11:21:47 pm
package com.gmail.sna;

public class Cat {
private String name;
private String color;
private int year;
private int amountOfFish;
private double mlOfMilk;

public Cat() {
}

public Cat(String name, String color, int year, int amountOffFish, double mlOfMilk) {
super();
this.name = name;
this.color = color;
this.year = year;
this.amountOfFish = amountOfFish;
this.mlOfMilk = mlOfMilk;
}

public void increaseFish(int f) {
amountOfFish = amountOfFish + f;
}

public void increaseMilk(double m) {
mlOfMilk = mlOfMilk + m;
}

Cat repaintCat (Cat x, String newcolor) {
x.color = newcolor;
return x;
}

public void print() {
System.out.println("Name: " + name);
System.out.println("Color: " + color);
System.out.println("Year: " + year);
System.out.println("amountOfFish: " + amountOfFish);
System.out.println("mlOfMilk: " + mlOfMilk);
}
}
Название: Re: Java_OOP_Alexander_Beresteyka_10_02_2020
Отправлено: natalie.syrota от Февраля 10, 2020, 11:22:18 pm
package com.gmail.sna;

public class Main {

public static void main(String[] args) {
// TODO Auto-generated method stub

Cat cat1 = new Cat ("Max", "white", 2016, 4, 175.5);
cat1.increaseFish(2);
cat1.increaseMilk(24.5);
cat1 = cat1.repaintCat(cat1, "grey");
cat1.print();

Cat cat2 = new Cat ("Lily", "black", 2018, 3, 185.5);
cat2.increaseFish(1);
cat2.increaseMilk(64.5);
cat2 = cat2.repaintCat(cat2, "red");
cat2.print();

}
}
Название: Re: Java_OOP_Alexander_Beresteyka_10_02_2020
Отправлено: Павел Т. от Февраля 10, 2020, 11:25:24 pm
Лекция 1. ДЗ

Задача 1: Описать класс «Cat» (в качестве образца можно взять домашнего питомца). Наделить его свойствами и методами. Создать несколько экземпляров объектов этого класса. Использовать эти объекты.

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

Задача 2: Описать класс «Triangle». В качестве свойств возьмите длины сторон треугольника. Реализуйте метод, который будет возвращать площадь этого треугольника. Создайте несколько объектов этого класса и протестируйте их.

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

Просьба также прокомментировать, все ли правильно экспортировано на GitHub, т.к. первый раз пользуюсь сервисом.
Название: Re: Java_OOP_Alexander_Beresteyka_10_02_2020
Отправлено: Павел Т. от Февраля 11, 2020, 09:34:59 pm
Лекция 1. ДЗ

Задача 3: Описать класс «Vector3d» (т. е., он должен описывать вектор в трехмерной, декартовой системе координат). В качестве свойств этого класса возьмите координаты вектора. Для этого класса реализовать методы сложения, скалярного и векторного произведения векторов. Создайте несколько объектов этого класса и протестируйте их.

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

Задача 4: Опишите класс Phone (одним из свойств должен быть его номер). Также опишите класс Network (сеть мобильного оператора). Телефон должен иметь метод регистрации в сети мобильного оператора. Также у телефона должен быть метод call (номер другого телефона), который переберет все телефоны, зарегистрированные в сети. Если такой номер будет найден, то осуществить вызов, если нет - вывести сообщение об ошибочности набранного номера.

https://github.com/VinnieJ-2k20/Homework14
Название: Re: Java_OOP_Alexander_Beresteyka_10_02_2020
Отправлено: Alexander Ts от Февраля 11, 2020, 11:28:31 pm
Yurii Pelykh
Задание 3.
Не верно. Векторное произведение и сложение должно возвращать ВЕКТОР. У вас же:

        public String vectorProduct(Vector3d b) {
Что явно не подходит.

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


Natalie.syrota
Решение верное. Однако перекрашивать кота, это конечно сильно.

Павел Т.
В Java не используются открытые поля класса. Так, что такой код неудачен:


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

Они должны быть private

Задание 4.
Не верно.
Как вы помните по условию параметром метода исходящий звонок должен быть только номер телефона на который вы совершаете вызов. Т.е. параметр должен быть только один. У вас же
public void outgoingCall(Phone companion, double minCallCost, Network[] listNetworks) {Что противоречит условию задания. По сути вы не выполнили требования тех. задания.

В остальном решение верное.
Название: Re: Java_OOP_Alexander_Beresteyka_10_02_2020
Отправлено: natalie.syrota от Февраля 11, 2020, 11:57:57 pm
package com.gmail.sna;

public class Triangle {
private double a;
private double b;
private double c;

public Triangle() {
}

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

public double findArea() {
double p = (a + b + c) / 2.0;
double s = 0;
if (a + b > c && a + c > b && b + c > a)
s = Math.sqrt(p * (p - a) * (p - b) * (p - c));
return s;
}
}

Название: Re: Java_OOP_Alexander_Beresteyka_10_02_2020
Отправлено: natalie.syrota от Февраля 11, 2020, 11:58:40 pm
package com.gmail.sna;

public class Main {

public static void main(String[] args) {
// TODO Auto-generated method stub

Triangle t1 = new Triangle (6, 8.5, 4.1);
double result1 = t1.findArea();
System.out.println(result1);

Triangle t2 = new Triangle(7.9, 2, 6.3);
double result2 = t2.findArea();
System.out.println(result2);
}
}
Название: Re: Java_OOP_Alexander_Beresteyka_10_02_2020
Отправлено: Y.Pelykh от Февраля 12, 2020, 12:07:29 am
Лекція 1

4) Опишите класс Phone (одним из свойств должен быть его номер). Также опишите класс Network (сеть мобильного оператора). Телефон должен иметь метод регистрации в сети мобильного оператора. Также у телефона должен быть метод call (номер другого телефона), который переберет все телефоны, зарегистрированные в сети. Если такой номер будет найден, то осуществить вызов, если нет - вывести сообщение об ошибочности набранного номера.

package com.gmail.yuriypelykh;

import com.gmail.yuriypelykh.Network;

public class Phone {

private String number;
private double balance;
private String tariff;
private String registration;
Network net = new Network();

public Phone() {

}

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

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 String getTariff() {
return tariff;
}

public void setTariff(String tariff) {
this.tariff = tariff;
}

public String getRegistration() {
return registration;
}

public void setRegistration(String registration) {
this.registration = registration;
}

public int call(String dstNumber) {
if (net.isRegistered(dstNumber) == 1) {
System.out.println("Calling to " + dstNumber + " in progress...");
return 1;
} else {
System.out.println("Unable to dial " + dstNumber +". Caller is out of service at this moment");
return -1;
}
}

public void regInNetwork() {
if (net.setRegisteredNumber(this.number) == 1) {
this.registration = "active";
}
}



@Override
public String toString() {
return ("\nnumber=" + number + "\nbalance=" + balance + "\ntariff=" + tariff + "\nregistration="
+ registration + "\n");
}

}

package com.gmail.yuriypelykh;

public class Network {

private static String[] registeredNumbers = new String[1000];

public Network() {

}

public String[] getRegisteredNumbers() {
return registeredNumbers;
}

public int setRegisteredNumber(String regNumber) {
for (int i = 0; i < registeredNumbers.length; i++) {
if (registeredNumbers[i] == regNumber) {
return 1;
}
}
for (int i = 0; i < registeredNumbers.length; i++) {
if (registeredNumbers[i] == null) {
registeredNumbers[i] = regNumber;
return 1;
}
}
return -1;
}

public int isRegistered(String number) {
for (int i = 0; i < registeredNumbers.length; i++) {
if (registeredNumbers[i] == number) {
return 1;
}
}
return -1;
}
}

package com.gmail.yuriypelykh;

public class Main {

public static void main(String[] args) {

Phone phone1 = new Phone("0971530480", 54.25, "Govory bez mezh");
Phone phone2 = new Phone("0969031205", 14.12, "Ineternet 4G+");
Phone phone3 = new Phone("0671123456", 23.12, "Govory bez mezh");

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

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

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

}
Название: Re: Java_OOP_Alexander_Beresteyka_10_02_2020
Отправлено: Alexander Ts от Февраля 12, 2020, 02:05:19 pm
Natalie.syrota
Класс Треугольник.
Отсутствуют методы получения и установки. Отсутствует метод toString()
В остальном решение верное

Yurii Pelykh
Класс телефон.
У вас у каждого телефона своя собственная сеть. Что очень странно. Т.е. такая строка весьма странная
        Network net = new Network();
Это же поле открытое, что также не верно.
Нет метода входящий звонок.
Это решение не соответствует заданию.
Название: Re: Java_OOP_Alexander_Beresteyka_10_02_2020
Отправлено: Galina Mezentseva от Февраля 13, 2020, 01:18:24 am
Домашка на 13.02
1. Описать класс «Cat» (в качестве образца можно взять домашнего питомца).
Наделить его свойствами и методами. Создать несколько экземпляров объектов
этого класса. Использовать эти объекты.
package com.gmail.glevyts;

public class Homework0 {

public static void main(String[] args) {

Animal dog = new Animal("Deza", 6, 8, "white", "bow-wow");

Animal cat = new Animal("Adolf", 12, 5, "grey", "meow");

System.out.println(dog);
System.out.println(cat);
}

}

class Animal {

private String name;
private int years;
private double weight;
private String colour;
private String voice;

public Animal(String name, int years, double weight, String colour, String voice) {
super();
this.name = name;
this.years = years;
this.weight = weight;
this.colour = colour;
this.voice = voice;

}

public String getName() {
return name;
}

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

public int getYears() {
return years;
}

public void setYears(int years) {
this.years = years;
}

public double getWeight() {
return weight;
}

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

public String getColour() {
return colour;
}

public void setColour(String colour) {
this.colour = colour;
}

public String getVoice() {
return voice;
}

public void setVoice(String voice) {
this.voice = voice;
}

@Override
public String toString() {
return "Animal [name=" + name + ", years=" + years + ", weight=" + weight + ", colour=" + colour + ", tells "
+ voice + " when needs smth]";
}

}

2. Описать класс «Triangle». В качестве свойств возьмите длины сторон
треугольника. Реализуйте метод, который будет возвращать площадь этого
треугольника. Создайте несколько объектов этого класса и протестируйте их.

package com.gmail.glevyts;

import java.util.Scanner;

public class Homework1 {

public static void main(String[] args) {

Scanner sc = new Scanner(System.in);
double a = sc.nextDouble();
double b = sc.nextDouble();
double c = sc.nextDouble();


Triangle triangle = new Triangle(a, b, c);

System.out.println(triangle.square());

}

}

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 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 square() {
double p = (a + b + c) / 2;
double s = Math.sqrt(p * (p - a) * (p - b) * (p - c));
return s;
}
}
Название: Re: Java_OOP_Alexander_Beresteyka_10_02_2020
Отправлено: Y.Pelykh от Февраля 13, 2020, 02:57:50 pm
Yurii Pelykh
Задание 3.
Не верно. Векторное произведение и сложение должно возвращать ВЕКТОР. У вас же:

        public String vectorProduct(Vector3d b) {
Что явно не подходит.

package com.gmail.yuriypelykh;

public class Vector3d {

private double x;
private double y;
private double z;

public Vector3d() {

}

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

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;
}

public double getZ() {
return z;
}

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

public Vector3d vectorAddition(double x, double y, double z) {
Vector3d ad = new Vector3d(this.x + x, this.y + y, this.z + z);
return ad;
}

public Vector3d vectorAddition(Vector3d b) {
Vector3d ad = new Vector3d(this.x + b.getX(), this.y + b.getY(), this.z + b.getZ());
return ad;
}

public double scalarProduct(double x, double y, double z) {
double sm = this.x * x + this.y * y + this.z * z;
return sm;
}

public double scalarProduct(Vector3d b) {
double sm = this.x * b.getX() + this.y * b.getY() + this.z * b.getZ();
return sm;
}

public Vector3d vectorProduct(double x, double y, double z) {
Vector3d vp = new Vector3d(this.y * z - this.z * y, this.z * x - this.x * z, this.x * y + this.y * x);
return vp;
}

public Vector3d vectorProduct(Vector3d b) {
Vector3d vp = new Vector3d(this.y * b.getZ() - this.z * b.getY(), this.z * b.getX() - this.x * b.getZ(), this.x * b.getY() + this.y * b.getX());
return vp;
}

@Override
public String toString() {
return "(" + x + "; " + y + "; " + z + ")";
}

}

package com.gmail.yuriypelykh;

public class Main {

public static void main(String[] args) {

Vector3d a = new Vector3d(3,4,5);
Vector3d b = new Vector3d(2,-3,4);

System.out.println("Vector addition of a and b : " + a.vectorAddition(b).toString());
System.out.println("Scalar product of a and b: " + b.scalarProduct(a));
System.out.println("Vector product of a and b: " + a.vectorProduct(b).toString());

}

}

Yurii Pelykh
Класс телефон.
У вас у каждого телефона своя собственная сеть. Что очень странно. Т.е. такая строка весьма странная
        Network net = new Network();
Это же поле открытое, что также не верно.
Нет метода входящий звонок.
Это решение не соответствует заданию.

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.setRegisteredNumber(this.number) == 1) {
this.network = net;
}
}

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

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

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

}

package com.gmail.yuriypelykh;

public class Network {

private String name;
private String[] registeredNumbers = new String[1000];

public Network() {

}

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

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

public String getName() {
return name;
}

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

public String[] getRegisteredNumbers() {
return registeredNumbers;
}

public void setRegisteredNumbers(String[] registeredNumbers) {
this.registeredNumbers = registeredNumbers;
}

public int setRegisteredNumber(String regNumber) {
for (int i = 0; i < registeredNumbers.length; i++) {
if (registeredNumbers[i] == regNumber) {
return 1;
}
}
for (int i = 0; i < registeredNumbers.length; i++) {
if (registeredNumbers[i] == null) {
registeredNumbers[i] = regNumber;
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);

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

}

}
Название: Re: Java_OOP_Alexander_Beresteyka_10_02_2020
Отправлено: Alexander Ts от Февраля 14, 2020, 01:37:40 pm
Galina Mezentseva
Решение верное.

Yurii Pelykh
Параметром метода исходящий звонок должен быть НОМЕР. У вас же:
        public void call(Phone dstPhone) {
Вы ведь не звоните на NOKIA 3310 вы звоните на НОМЕР. Так, что ваше решение не соответствует условию.

Задание с векторами решено верно.

Название: Re: Java_OOP_Alexander_Beresteyka_10_02_2020
Отправлено: Павел Т. от Февраля 14, 2020, 08:25:30 pm
Лекция 1. ДЗ

Задача 2. Треугольники
Цитировать
В Java не используются открытые поля класса. Так, что такой код неудачен:
Исправлено.

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

Задача 4. Сеть и телефоны
Переделал с учетом требований по параметру метода call:

https://github.com/VinnieJ-2k20/Homework14
Название: Re: Java_OOP_Alexander_Beresteyka_10_02_2020
Отправлено: Павел Т. от Февраля 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));
Название: Re: Java_OOP_Alexander_Beresteyka_10_02_2020
Отправлено: Alexander Ts от Февраля 15, 2020, 08:35:31 pm
Павел Т.
Для класса методы equals и hashCOde — не переопределенны. Поэтому использование для их хранения ArrayList довольно грубая ошибка. Такие строки кода неудачны:
private ArrayList<Phone> regNumbers;
Так же рекомендуется при работе с контейнерами использовать ссылку типа интерфейс а не реализация поэтому, эта же строка дважды неудачна.

Лекция 2.
Решение верное.
По UML диаграммам. Тут не как идея в способе создания. Это отношение между модельным представлением. Точки могут существовать вне треугольника? Да. Так, что таки агрегация.
Название: Re: Java_OOP_Alexander_Beresteyka_10_02_2020
Отправлено: Y.Pelykh от Февраля 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();

}

}


(http://i.piccy.info/i9/466aaffdf56ef6bec8d98a971f85b212/1581794487/20878/1327569/Screenshot_1.png)
Название: Re: Java_OOP_Alexander_Beresteyka_10_02_2020
Отправлено: natalie.syrota от Февраля 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 + "]";
}
}
Название: Re: Java_OOP_Alexander_Beresteyka_10_02_2020
Отправлено: Павел Т. от Февраля 16, 2020, 02:00:57 am
Лекция 1. ДЗ
Задача 4. Сеть и телефоны
Убрал использование ArrayList, приделал ручное изменение размеров базы телефонов через массивы.
https://github.com/VinnieJ-2k20/Homework14 (https://github.com/VinnieJ-2k20/Homework14)

Лекция 2. ДЗ. Доска и фигуры
Добавил UML-диаграмму проекта.
https://github.com/VinnieJ-2k20/Homework2/blob/master/Homework2.jpg (https://github.com/VinnieJ-2k20/Homework2/blob/master/Homework2.jpg)
Название: Re: Java_OOP_Alexander_Beresteyka_10_02_2020
Отправлено: Alexander Ts от Февраля 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);

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


Павел Т.
Решение верное
Название: Re: Java_OOP_Alexander_Beresteyka_10_02_2020
Отправлено: natalie.syrota от Февраля 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 + "]";
}
}

Название: Re: Java_OOP_Alexander_Beresteyka_10_02_2020
Отправлено: Alexander Ts от Февраля 17, 2020, 10:07:21 am
https://www.youtube.com/watch?v=PEKN8NtBDQ0
Название: Re: Java_OOP_Alexander_Beresteyka_10_02_2020
Отправлено: Alexander Ts от Февраля 17, 2020, 02:23:06 pm
Natalie.syrota

Решение верное
Название: Re: Java_OOP_Alexander_Beresteyka_10_02_2020
Отправлено: Павел Т. от Февраля 18, 2020, 04:45:40 pm
Лекция 3. ДЗ. Группа студентов

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

https://github.com/VinnieJ-2k20/Homework3
Название: Re: Java_OOP_Alexander_Beresteyka_10_02_2020
Отправлено: Y.Pelykh от Февраля 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";
}
}
Название: Re: Java_OOP_Alexander_Beresteyka_10_02_2020
Отправлено: Alexander Ts от Февраля 19, 2020, 12:38:04 am
Павел Т.
Решение верное

Yurii Pelykh
Ссылочные тпы данных не сравнивают с помощью оператора ==. Так, что такой код неудачен:
                        if (group[i] == student) {В остальном решение верное
Название: Re: Java_OOP_Alexander_Beresteyka_10_02_2020
Отправлено: Alexander Ts от Февраля 19, 2020, 10:04:33 am
https://github.com/TsymbaliukOleksandr1981/JavaOOPTask
Название: Re: Java_OOP_Alexander_Beresteyka_10_02_2020
Отправлено: Y.Pelykh от Февраля 21, 2020, 08:42:12 pm
Лекція 4

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

https://github.com/YuriyPelykh/OopHw4ex1.1-5 (https://github.com/YuriyPelykh/OopHw4ex1.1-5)
Название: Re: Java_OOP_Alexander_Beresteyka_10_02_2020
Отправлено: Павел Т. от Февраля 22, 2020, 02:06:29 pm
Лекция 4. ДЗ. Группа студентов - Военком, сортировка, интерактивный ввод.

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

https://github.com/VinnieJ-2k20/Homework3
Название: Re: Java_OOP_Alexander_Beresteyka_10_02_2020
Отправлено: Alexander Ts от Февраля 22, 2020, 11:19:56 pm
Y.Pelykh
У вас в классе Студент не реализован метод equals так, что такое использование по сути бесполезно и некорректно:
if (this.list[i] != null && this.list[i].equals(student)) {В остальном решение верное

Павел Т.
Интерфейс Военком должен возвращать массив Студентов, у вас же:
public Object[] getRecruitsList();Что не соответствует условию задачи

По условию массив Студентов должен иметь размер 10. Ваш же массив можно задать любого размера и передать его в конструктор.

В остальном решение верное
Название: Re: Java_OOP_Alexander_Beresteyka_10_02_2020
Отправлено: Павел Т. от Февраля 22, 2020, 11:42:07 pm
Лекция 4. ДЗ. Группа студентов - Военком, сортировка, интерактивный ввод.

Поправил: https://github.com/VinnieJ-2k20/Homework3
Название: Re: Java_OOP_Alexander_Beresteyka_10_02_2020
Отправлено: Y.Pelykh от Февраля 22, 2020, 11:53:01 pm
Yurii Pelykh
Ссылочные тпы данных не сравнивают с помощью оператора ==. Так, что такой код неудачен:
                        if (group[i] == student) {

Y.Pelykh
У вас в классе Студент не реализован метод equals так, что такое использование по сути бесполезно и некорректно:
if (this.list[i] != null && this.list[i].equals(student)) {

Вибачте, не зовсім розумію, чому і як метод equals має бути реалізований у класі Студент? Думав, це стандартний, "вшитий", метод порівняння будь-яких об'єктів. Вкористав його для виправлення помилки, на яку ви вказали минулого разу: порівняння об'єктів за допомогою оператора ==.
Название: Re: Java_OOP_Alexander_Beresteyka_10_02_2020
Отправлено: Y.Pelykh от Февраля 23, 2020, 02:02:45 pm
Цитировать
public boolean equals(Object obj) {
        return (this == obj);
    }

Це підстава.

Додав метод equals() в клас Student. Прошу перевірити, чи правильно все зрозумів.

https://github.com/YuriyPelykh/OopHw4ex1.1-5 (https://github.com/YuriyPelykh/OopHw4ex1.1-5)
Название: Re: Java_OOP_Alexander_Beresteyka_10_02_2020
Отправлено: Galina Mezentseva от Февраля 23, 2020, 11:53:04 pm
1. Усовершенствуйте класс Group, добавив возможность
интерактивного добавления объекта.
2. Реализуйте возможность сортировки списка студентов
по фамилии.
3. Реализуйте возможность сортировки по параметру
(Фамилия, успеваемость и т. д.).
4. Реализуйте интерфейс Военком, который вернет из группы
массив студентов - юношей, которым больше 18 лет.
5. Протестируйте его работу.

https://github.com/kalinka2436/oop-hw10/tree/master/HomeWork1902/src/com/gmail/glevyts
Название: Re: Java_OOP_Alexander_Beresteyka_10_02_2020
Отправлено: Alexander Ts от Февраля 25, 2020, 12:31:56 pm
Павел Т.
Решение верное

Y.Pelykh
Стало хуже чем было. Теперь нет согласованности при переопределении методов equals и hashCode.

Galina Mezentseva
В методе:

public void addStudent(Student student, int j) throws MyException {
Зачем вообще нужен второй параметр? Т.е. зачем этот  int j — нужен?
В остальном решение верное
Название: Re: Java_OOP_Alexander_Beresteyka_10_02_2020
Отправлено: Павел Т. от Февраля 25, 2020, 08:55:47 pm
Лекция 5. ДЗ.

1. Напишите программу, которая скопирует файлы с заранее определенным расширением(например, только doc) из каталога источника в каталог приемник.
https://github.com/VinnieJ-2k20/Homework51

2. Напишите программу, которая примет на вход два текстовых файла, а вернет один. Содержимым этого файла должны быть слова, которые одновременно есть и в первом и во втором файле.
https://github.com/VinnieJ-2k20/Homework52
Название: Re: Java_OOP_Alexander_Beresteyka_10_02_2020
Отправлено: Alexander Ts от Февраля 27, 2020, 11:10:25 pm

Павел Т.

Решение верное
Название: Re: Java_OOP_Alexander_Beresteyka_10_02_2020
Отправлено: Павел Т. от Марта 01, 2020, 02:03:10 pm
Лекция 5. ДЗ.

3. Усовершенствуйте класс, описывающий группу студентов, добавив возможность сохранения группы в файл.
4. Реализовать обратный процесс. Т.е. считать данные о группе из файла, и на их основе создать объект типа группа.

https://github.com/VinnieJ-2k20/Homework3
Название: Re: Java_OOP_Alexander_Beresteyka_10_02_2020
Отправлено: Павел Т. от Марта 01, 2020, 04:43:24 pm
Лекция 6. ДЗ. Многопоточность ч.1

1) Создайте сто потоков, которые будут вычислять факториал числа, равного номеру этого потока, и выводить результат на экран.
https://github.com/VinnieJ-2k20/Homework61

2) Написать код для многопоточного подсчета суммы элементов массива целых чисел. Сравнить скорость подсчета с простым алгоритмом.
У меня получается, что однопоточный алгоритм выполняется раз в 5 быстрее многопоточного. Это нормально, или я где-то просчитался?
https://github.com/VinnieJ-2k20/Homework62
Название: Re: Java_OOP_Alexander_Beresteyka_10_02_2020
Отправлено: Y.Pelykh от Марта 01, 2020, 09:18:30 pm
Лекція 5

1. Напишите программу, которая скопирует файлы с заранее определенным расширением(например, только doc) из каталога источника в каталог приемник.

https://github.com/YuriyPelykh/OopHw5ex1.1 (https://github.com/YuriyPelykh/OopHw5ex1.1)

2. Напишите программу, которая примет на вход два текстовых файла, а вернет один. Содержимым этого файла должны быть слова, которые одновременно есть и в первом и во втором файле.

https://github.com/YuriyPelykh/OopHw5ex1.2 (https://github.com/YuriyPelykh/OopHw5ex1.2)

3. Усовершенствуйте класс, описывающий группу студентов, добавив возможность сохранения группы в файл.

Y.Pelykh
Стало хуже чем было. Теперь нет согласованности при переопределении методов equals и hashCode.

Вніс зміни.

https://github.com/YuriyPelykh/OopHw5ex1.3 (https://github.com/YuriyPelykh/OopHw5ex1.3)

Название: Re: Java_OOP_Alexander_Beresteyka_10_02_2020
Отправлено: Y.Pelykh от Марта 03, 2020, 11:34:17 pm
Лекція 5

4. Реализовать обратный процесс. Т.е. считать данные о группе из файла, и на их основе создать объект типа группа.

https://github.com/YuriyPelykh/OopHw5ex1.4 (https://github.com/YuriyPelykh/OopHw5ex1.4)
Название: Re: Java_OOP_Alexander_Beresteyka_10_02_2020
Отправлено: Alexander Ts от Марта 03, 2020, 11:36:36 pm
Павел Т.
Вопрос о многопоточности мы надеюсь уже решили на лекции.  Сначала все потоки запустите в цикле, а потом их присоедините отдельным циклом.

Y.Pelykh
А вот так уже гораздо симпатичнее.
Название: Re: Java_OOP_Alexander_Beresteyka_10_02_2020
Отправлено: Павел Т. от Марта 10, 2020, 09:37:58 pm
Лекция 8. ДЗ. java.lang.Object

1) Используя стандартныe методы сериализации создайте мини-базу данных для работы с группами студентов (возможность записи и чтения базы из файла по запросу пользователя).
https://github.com/VinnieJ-2k20/Homework3

2) Создайте класс-контейнер типа стек (класс в который можно добавлять и удалять объекты других классов, только в вершину стека), в который можно сохранять объекты произвольного типа. Должен быть метод добавления элемента в стек, получение с удалением элемента из стека, и просто получение элемента из вершины из стека. Должна быть реализована работа с «черным списком» классов (смотри ниже). Если объект который добавляется в стек принадлежит классу из «черного списка», то добавление такого объекта запрещено.
3) Для описанного выше стека создайте класс «Черный список», в котором будут описаны классы объектов которые нельзя добавлять в стек. Должна быть возможность добавления классов в черный список, проверка объекта на то, что класс, к которому он принадлежит, принадлежит или не принадлежит к классам в черном списке.
https://github.com/VinnieJ-2k20/Homework823
Название: Re: Java_OOP_Alexander_Beresteyka_10_02_2020
Отправлено: Y.Pelykh от Марта 10, 2020, 11:16:18 pm
Лекція 6
1) Создайте сто потоков, которые будут вычислять факториал числа, равного номеру этого потока, и выводить результат на экран.

https://github.com/YuriyPelykh/OopHw6ex1.1

2) Написать код для многопоточного подсчета суммы элементов массива целых чисел. Сравнить скорость подсчета с простым алгоритмом.

https://github.com/YuriyPelykh/OopHw6ex1.2

Лекція 8

1) Используя стандартный методы сериализации создайте мини-базу данных для работы с группами студентов (возможность записи и чтения базы из файла по запросу пользователя).

https://github.com/YuriyPelykh/OopHw8ex1.1

Название: Re: Java_OOP_Alexander_Beresteyka_10_02_2020
Отправлено: Alexander Ts от Марта 11, 2020, 12:32:01 am
Павел Т.
Решение верное

Y.Pelykh
Решение верное
Название: Re: Java_OOP_Alexander_Beresteyka_10_02_2020
Отправлено: natalie.syrota от Марта 15, 2020, 07:27:43 pm
1) Написать метод, который создаст список, положит в него 10
элементов, затем удалит первые два и последний, а затем выведет
результат на экран.

https://github.com/NatalieSyrota/Homework_OOP/blob/master/src/com/gmail/sna/Main.java
Название: Re: Java_OOP_Alexander_Beresteyka_10_02_2020
Отправлено: Павел Т. от Марта 15, 2020, 10:14:25 pm
Лекция 9. ДЗ. Коллекции

1) Написать метод, который создаст список, положит в него 10 элементов, затем удалит первые два и последний, а затем выведет результат на экран.
https://github.com/VinnieJ-2k20/Homework91

2) Модифицируйте класс «Группа» для более удобных методов работы с динамическими массивами.
https://github.com/VinnieJ-2k20/Students

3) Считайте из файла текст на английском языке, вычислите относительную частоту повторения каждой буквы и выведите на экран результат в порядке убывания относительной частоты повторения.
https://github.com/VinnieJ-2k20/Homework93

4) Шелдон, Леонард, Воловиц, Кутрапалли и Пенни стоят в очереди за «двойной колой». Как только человек выпьет такой колы, он раздваивается и оба становятся в конец очереди, чтобы выпить еще стаканчик. Напишите программу, которая выведет на экран состояние очереди в зависимости от того, сколько стаканов колы выдал аппарат с чудесным напитком. Например, если было выдано только два стакана, то очередь выглядит как:
[Volovitc, Kutrapalli, Penny, Sheldon, Sheldon, Leonard, Leonard]
https://github.com/VinnieJ-2k20/BigBangTheory
Название: Re: Java_OOP_Alexander_Beresteyka_10_02_2020
Отправлено: Y.Pelykh от Марта 15, 2020, 10:30:27 pm
Лекція 8

2) Создайте класс-контейнер типа стек (класс в который можно добавлять и удалять объекты других классов, только в вершину стека), в который можно сохранять объекты произвольного типа. Должен быть метод добавления элемента в стек, получение с удалением элемента из стека, и просто получение элемента из вершины из стека. Должна быть реализована работа с «черным списком» классов (смотри ниже). Если объект который добавляется в стек принадлежит классу из «черного списка», то добавление такого объекта запрещено.
3) Для описанного выше стека создайте класс «Черный список», в котором будут описаны классы объектов которые нельзя добавлять в стек. Должна быть возможность добавления классов в черный список, проверка объекта на то, что класс, к которому он принадлежит, принадлежит или не принадлежит к классам в черном списке.

https://github.com/YuriyPelykh/OopHw8ex1.2-3 (https://github.com/YuriyPelykh/OopHw8ex1.2-3)

Лекція 9

1) Написать метод, который создаст список, положит в него 10 элементов, затем удалит первые два и последний, а затем выведет результат на экран.

https://github.com/YuriyPelykh/OopHw9ex1.1 (https://github.com/YuriyPelykh/OopHw9ex1.1)

2) Модифицируйте класс «Группа» для более удобных методов работы с динамическими массивами.

https://github.com/YuriyPelykh/OopHw9ex1.2 (https://github.com/YuriyPelykh/OopHw9ex1.2)
Название: Re: Java_OOP_Alexander_Beresteyka_10_02_2020
Отправлено: Alexander Ts от Марта 17, 2020, 03:20:12 pm
Natalie.syrota
Решение верное

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

Y.Pelykh
Решение верное
Название: Re: Java_OOP_Alexander_Beresteyka_10_02_2020
Отправлено: Y.Pelykh от Марта 18, 2020, 12:16:28 am
Лекція 9

3) Считайте из файла текст на английском языке, вычислите относительную частоту повторения каждой буквы и выведите на экран результат в порядке убывания относительной частоты повторения.

https://github.com/YuriyPelykh/OopHw9ex1.3 (https://github.com/YuriyPelykh/OopHw9ex1.3)
Название: Re: Java_OOP_Alexander_Beresteyka_10_02_2020
Отправлено: Alexander Ts от Марта 18, 2020, 12:43:39 am
Y.Pelykh

Решение верное
Название: Re: Java_OOP_Alexander_Beresteyka_10_02_2020
Отправлено: Павел Т. от Марта 18, 2020, 02:06:58 am
Лекция 10. ДЗ. Map

1. Написать программу - переводчик, которая будет переводить текст в файле English.in, написанный на английском языке, на украинский язык, согласно заранее составленному словарю. Результат сохранить в файл Ukrainian.out.
2. Сделать ф-ю ручного наполнения словаря и возможность его сохранения на диск.
https://github.com/VinnieJ-2k20/Translation
Название: Re: Java_OOP_Alexander_Beresteyka_10_02_2020
Отправлено: Alexander Ts от Марта 18, 2020, 01:33:39 pm
Павел Т.

Решение верное
Название: Re: Java_OOP_Alexander_Beresteyka_10_02_2020
Отправлено: Y.Pelykh от Марта 22, 2020, 04:31:55 pm
Лекція 9

4) Шелдон, Леонард, Воловиц, Кутрапалли и Пенни стоят в очереди за «двойной колой». Как только человек выпьет такой колы, он раздваивается и оба становятся в конец очереди, чтобы выпить еще стаканчик. Напишите программу, которая выведет на экран состояние очереди в зависимости от того, сколько стаканов колы выдал аппарат с чудесным напитком.

https://github.com/YuriyPelykh/OopHw9ex1.4 (https://github.com/YuriyPelykh/OopHw9ex1.4)


Лекція 10

1. Написать программу - переводчик, которая будет переводить текст в файле English.in, написанный на английском языке, на украинский язык, согласно заранее составленному словарю. Результат сохранить в файл Ukrainian.out.
2. Сделать ф-ю ручного наполнения словаря и возможность его сохранения на диск.

https://github.com/YuriyPelykh/OopHw10ex1.1-2 (https://github.com/YuriyPelykh/OopHw10ex1.1-2)

4. Реализуйте программу, которая сопоставит каждой букве ее представление в виде ASCII - art. Ваша программа должна дать возможность вывода произвольного текста на экран в виде его ASCII-art представления.

https://github.com/YuriyPelykh/OopHw10ex1.4
Название: Re: Java_OOP_Alexander_Beresteyka_10_02_2020
Отправлено: Alexander Ts от Марта 22, 2020, 10:56:07 pm
Y.Pelykh

Решение верное
Название: Re: Java_OOP_Alexander_Beresteyka_10_02_2020
Отправлено: Павел Т. от Марта 23, 2020, 12:21:11 am
Лекция 11. ДЗ. Сетевое программирование

1. Проверить доступность сайтов указанных в отдельном файле.
https://github.com/VinnieJ-2k20/AvailableSites
Название: Re: Java_OOP_Alexander_Beresteyka_10_02_2020
Отправлено: Alexander Ts от Марта 23, 2020, 11:02:03 am
Павел Т.

Решение верное
Название: Re: Java_OOP_Alexander_Beresteyka_10_02_2020
Отправлено: Alexander Ts от Марта 23, 2020, 11:02:59 am
Итак что полезно почитать после окончания курса Java OOP для начинающего

Enterprice разработчика

1) Основы html и CSS - Например тут - http://htmlbook.ru/
   Если быстро и относительно просто красивый FrontEnd к своему проекту - то попробуйте BootStrap - http://getbootstrap.com/

2) Познакомится и разобраться как работает Maven - Разобраться как работать именно из консоли - никаких IDE
   Maven - https://maven.apache.org/
   
   Почитать о Maven - http://www.apache-maven.ru/           
                 https://habrahabr.ru/post/77382/

3) Зарегистрироваться для получения бесплатного хостинга
   Heroku - https://www.heroku.com/
   Open Shift - https://www.openshift.com/
 
4) Установить и настроить сервер баз данных (один на ваш выбор. Всеволод любит MySQL):
      MySQL - https://www.mysql.com/
      PostgreSQL - https://www.postgresql.org/

5) Основы sql - Изучать лучше на примере MySQL - http://dump.codebreak.ru/vv206_files_archive/6%20%D1%81%D0%B5%D0%BC%D0%B5%D1%81%D1%82%D1%80/%D0%91%D0%B0%D0%B7%D1%8B%20%D0%94%D0%B0%D0%BD%D0%BD%D1%8B%D1%85/%D0%92%D0%B8%D0%BA%D1%82%D0%BE%D1%80_%D0%93%D0%BE%D0%BB%D1%8C%D1%86%D0%BC%D0%B0%D0%BD_-_mysql_5.0_-_%D0%91%D0%B8%D0%B1%D0%BB%D0%B8%D0%BE%D1%82%D0%B5%D0%BA%D0%B0_%D0%BF%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D0%BC%D0%B8%D1%81%D1%82%D0%B0_-_2010.pdf

6) Установить и настроить контейнер сервлетов - Apache TomCat - http://tomcat.apache.org/


Рекомендации для Android разработчика:

1) Установить и настроить среду разработки Android Studio - https://developer.android.com/studio/index.html
2) Прочесть (по возможности как можно больше туториал рекомендованный преподавателем) - https://github.com/codepath/android_guides/wiki
3) Можете изучить работу со встраиваемой базой данных SQLite - https://www.sqlite.org/


Если у вас есть желание оставить отзыв о наших курсах, то вы можете сделать это по ссылке - https://jobs.dou.ua/companies/progkievua/reviews/
Заранее спасибо за отзывы.

Ну и удачи вам в дальнейшем развитии.

С уважением Цымбалюк А.Н.