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

Программирование => Java SE => Тема начата: Alexander Ts от Января 11, 2020, 03:09:27 pm

Название: Java_OOP_Alexander_Beresteyka_11_01_2020
Отправлено: Alexander Ts от Января 11, 2020, 03:09:27 pm
Wellcome
Название: Re: Java_OOP_Alexander_Beresteyka_11_01_2020
Отправлено: Alexander Ts от Января 11, 2020, 03:10:29 pm
Книги по Java - https://drive.google.com/drive/folders/14YAjUyIsosN1_2mvqFvwaEn9mf3HKRD4?usp=sharing
Название: Re: Java_OOP_Alexander_Beresteyka_11_01_2020
Отправлено: Ts.Tatyana от Января 12, 2020, 08:26:39 pm
 Описать класс «Cat» (в качестве образца можно взять домашнего питомца). Наделить его свойствами и методами. Создать несколько экземпляров объектов этого класса. Использовать эти объекты.
package com.gmail.ts;

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

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

public String getColor() {
return color;
}

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

public int getYear() {
return year;
}

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

public double getWeight() {
return weight;
}

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

public boolean isSex() {
return sex;
}

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

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

@Override
public String toString() {
return "[color=" + color + ", year=" + year + ", weight=" + weight + ", sex=" + sex + "]";
}

}
package com.gmail.ts;

public class Main {

public static void main(String[] args) {

Cat SiameseCat = new Cat("white with black", 3, 3, true);
Cat BritishCat = new Cat("grey", 6, 5, true);

System.out.println("British cat" + BritishCat);
System.out.println("Siamese Cat" + SiameseCat);
SiameseCat.getVoice();
}

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

import java.lang.Math;

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

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

public 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 void s() {
double p = (a + b + c) / 2;
double s = Math.sqrt(p * (p - a) * (p - b) * (p - c));
System.out.println(s);
}

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

public class Main {

public static void main(String[] args) {
Triangle a = new Triangle(5, 7, 3);
Triangle b = new Triangle(4, 6, 5);

System.out.println(a);
System.out.println(b);
System.out.print("Sa = ");
a.s();
System.out.print("Sb = ");
b.s();
}

}
Название: Re: Java_OOP_Alexander_Beresteyka_11_01_2020
Отправлено: Alexander Ts от Января 13, 2020, 02:46:30 pm
Ts.Tatyana
Задача 2.

В условии указанно, что метод должен ВЕРНУТЬ площадь треугольника. У вас же:

        public void s() {
Т.е. ваш метод ничего не возвращает ничего. А это противоречит условию.

В остальном решение верное.
Название: Re: Java_OOP_Alexander_Beresteyka_11_01_2020
Отправлено: Random от Января 13, 2020, 11:58:15 pm
Задача 1. Описать класс «Cat» (в качестве образца можно взять домашнего питомца). Наделить его свойствами и методами. Создать несколько экземпляров объектов этого класса. Использовать эти объекты.

package com.gmail.iaroslavakorenovska;

public class Cat {

//Fields
private String name;
private int age;
private int sex;
private int type;
private double weight;


//Constructions
public Cat(String name, int age, int sex, int type, double weight) {
super();
this.name = name;
this.age = age;
this.sex = sex;
this.type = type;
this.weight = weight;
}


public Cat() {
super();
}

//Getters&Setters
public String getName() {
return name;
}


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


public int getAge() {
return age;
}


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


public int getSex() {
return sex;
}


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


public int getType() {
return type;
}


public void setType(int type) {
this.type = type;
}


public double getWeight() {
return weight;
}


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

//Methods

public void voice() {
if(this.sex==1) {
System.out.println("Meow-meow-male");
}
else {
System.out.println("Meow-meow-female");
}
}

public void vTapok(int age) {
if(this.age>age) {
System.out.println("You think I'm too old, so I did something in your shoes");
}
else {
System.out.println("I'm too young to do something with your shoes");
}
}


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



}

package com.gmail.iaroslavakorenovska;

public class Main {

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

Cat catMale = new Cat("Snickers", 3, 1, 12, 7.2);
Cat catFemale = new Cat("Whiskas", 2, 2, 7, 5.8);

System.out.println(catMale.toString());
catMale.voice();
catMale.vTapok(2);

System.out.println(catFemale.toString());
catFemale.voice();
catFemale.vTapok(2);

}

}
Название: Re: Java_OOP_Alexander_Beresteyka_11_01_2020
Отправлено: Random от Января 14, 2020, 12:01:12 am
Задача 2. Описать класс «Triangle». В качестве свойств возьмите длины сторон треугольника. Реализуйте метод, который будет возвращать площадь этого треугольника. Создайте несколько объектов этого класса и протестируйте их.

package com.gmail.iaroslavakorenovska;

public class Triangle {

// Fields
private double lengthA;
private double lengthB;
private double lengthC;

// Constructors
public Triangle(double lengthA, double lengthB, double lengthC) {
super();
this.lengthA = lengthA;
this.lengthB = lengthB;
this.lengthC = lengthC;
}

public Triangle() {
super();
}

// Setters&Getters

public double getLengthA() {
return lengthA;
}

public void setLengthA(double lengthA) {
this.lengthA = lengthA;
}

public double getLengthB() {
return lengthB;
}

public void setLengthB(double lengthB) {
this.lengthB = lengthB;
}

public double getLengthC() {
return lengthC;
}

public void setLengthC(double lengthC) {
this.lengthC = lengthC;
}

// Methods

public boolean ifTriangle() {
if ((lengthA <= 0) || (lengthB <= 0) || (lengthC <= 0)) {
return false;
} else {
if ((lengthA + lengthB >= lengthC) && (lengthB + lengthC >= lengthA) && (lengthA + lengthC >= lengthB)) {
return true;
} else {
return false;
}
}
}

public double getArea() {
if (this.ifTriangle()) {
double p = (lengthA + lengthB + lengthC) / 2;
System.out.print("The area of considered triangle equals to ");
return Math.sqrt(p * (p - lengthA) * (p - lengthB) * (p - lengthC));
} else {
System.out.print("It isn't a triangle, so its area equals to ");
return 0;
}
}

@Override
public String toString() {
return "Triangle [lengthA=" + lengthA + ", lengthB=" + lengthB + ", lengthC=" + lengthC + "]";
}

}


package com.gmail.iaroslavakorenovska;

public class Main {

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

// задание треугольника и вывод его площади
Triangle tr = new Triangle(4, 2, 3);
System.out.println(tr.getArea());

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

//другой треугольник
tr.setLengthA(2);
System.out.println(tr.getArea());

//вырожденный треугольник
tr.setLengthA(5);
System.out.println(tr.getArea());

//не треугольник - отрицательная длина стороны
tr.setLengthA(-2);
System.out.println(tr.getArea());

// не треугольник - нарушение аксиомы треугольника
tr.setLengthA(6);
System.out.println(tr.getArea());
}

}

Название: Re: Java_OOP_Alexander_Beresteyka_11_01_2020
Отправлено: Random от Января 14, 2020, 12:04:32 am
Задача 3. Описать класс «Vector3d» (т. е., он должен описывать вектор в трехмерной, декартовой системе координат). В качестве свойств этого класса возьмите координаты вектора. Для этого класса реализовать методы сложения,  скалярного и векторного произведения векторов. Создайте несколько объектов этого класса и протестируйте их.

package com.gmail.iaroslavakorenovska;

public class Vector3d {

// Fields
private double x;
private double y;
private double z;

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

public Vector3d() {
super();
}

// Setters&Getters

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

// Methods

public Vector3d summa(Vector3d a, Vector3d b) {
Vector3d sum = new Vector3d(a.x + b.x, a.y + b.y, a.z + b.z);
return sum;
}

public double innerProduct(Vector3d a, Vector3d b) {
return a.x * b.x + a.y * b.y + a.z * b.z;
}

public Vector3d vectorProduct(Vector3d a, Vector3d b) {
Vector3d prod = new Vector3d(a.y * b.z - a.z * b.y, a.z * b.x - a.x * b.z, a.x * b.y - a.y * b.z);
return prod;
}

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

}


package com.gmail.iaroslavakorenovska;

public class Main {

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

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

System.out.println(a.summa(a, b));
System.out.println("Inner product:"+ a.innerProduct(a,b));
System.out.println("Vector product:" +b.vectorProduct(a, b));

}

}
Название: Re: Java_OOP_Alexander_Beresteyka_11_01_2020
Отправлено: Random от Января 14, 2020, 12:19:35 am
Задача 4.  Опишите класс Phone (одним из свойств должен быть его номер). Также опишите класс Network (сеть мобильного оператора). Телефон должен иметь метод регистрации в сети мобильного оператора. Также у телефона должен быть метод call (номер другого телефона), который переберет все телефоны, зарегистрированные в сети. Если такой номер будет найден, то осуществить вызов, если нет - вывести сообщение об ошибочности набранного номера.

Александр, данное решение при условии, что задана лишь одна сеть мобильного оператора и не зарегистрированный в ней номер не может звонить. Или такие ограничения стоит опустить и решать в общем случае?
package com.gmail.iaroslavakorenovska;

import java.util.Arrays;

public class Network {

//Fields
private String name;
private int[] net;

// Constructors
public Network(String name, int[] net) {
super();
this.name = name;
this.net = net;
}

public Network() {
super();
}

// Getters&Setters
public String getName() {
return name;
}

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

public int[] getNet() {
return net;
}

public void setNet(int[] net) {
this.net = net;
}

// Methods

public boolean numberInNet(int number) {
boolean p = false;
for (int i = 0; i < this.getNet().length; i++) {
if (number == this.getNet()[i]) {
p = true;
break;
}
}
return p;
}

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

}


package com.gmail.iaroslavakorenovska;

public class Phone {

// Fields
private int number;
private String model;
private Network network;

// Constructors

public Phone(int number) {
super();
this.number = number;
}

public Phone() {
super();
}

// Getters&Setters
public int getNumber() {
return number;
}

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

public String getModel() {
return model;
}

public void setModel(String model) {
this.model = model;
}

public Network getNetwork() {
return network;
}

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

// Methods
public boolean register(Network network) {
boolean p = false;
for (int i = 0; i < network.getNet().length; i++) {
if (number == network.getNet()[i]) {
p = true;
this.setNetwork(network);
break;
}
}
return p;
}

public void call(int number) {
if (this.number == number) {
System.out.println("You can't call to yourself");
}
else {
String callText = "";
for (int i = 0; i < this.getNetwork().getNet().length; i++) {
if (number == this.getNetwork().getNet()[i]) {
callText = "Hello! How are you?";
break;
} else {
callText = "This number doesn't exist!";
}
}
System.out.println(callText);
}

}
}

public class Main {

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

//Create Network
int[] net=new int[1000000000];
for(int i=0; i<net.length; i++) {
net[i]=i;
}

Network network=new Network("New Network", net);

//Create Phones
Phone phone1=new Phone(1234567);
System.out.println(phone1.register(network));

Phone phone2=new Phone(1234567870);
System.out.println(phone2.register(network));

Phone phone3=new Phone(123);
System.out.println(phone3.register(network));

//Lets call
phone1.call(phone3.getNumber());
phone3.call(phone2.getNumber());
}

}


Название: Re: Java_OOP_Alexander_Beresteyka_11_01_2020
Отправлено: A.Tuliuliuk от Января 14, 2020, 09:51:18 pm
1)  Описать  класс  «Cat»  (в  качестве  образца  можно  взять  домашнего  питомца).
Наделить  его  свойствами  и  методами.  Создать  несколько  экземпляров  объектов
этого класса. Использовать эти объекты.

Cat.java
package com.gmail.taa;

public class Cat {

private String name;
private String sex;
private double age;
private String color;
private String likeFood;

public Cat(String name, String sex, double age, String color, String likeFood) {

this.name = name;
this.sex = sex;
this.age = age;
this.color = color;
this.likeFood = likeFood;

}

public Cat() {
super();
}

public String getName() {
return name;
}

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

public String getSex() {
return sex;
}

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

public double getAge() {
return age;
}

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

public String getColor() {
return color;
}

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

public String getLikeFood() {
return likeFood;
}

public void setLikeFood(String likeFood) {
this.likeFood = likeFood;
}
public void getVoice() {
System.out.println("Meow-meow");
}

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

}


Main.java
package com.gmail.taa;

public class Main {

public static void main(String[] args) {
// TODO Auto-generated method stub
Cat cat1 = new Cat("Tom","Men",2,"Grey","Milk");
System.out.println(cat1);
cat1.getVoice();

System.out.println();

Cat cat2 = new Cat("Kuzia","Men",1.5,"Black","Fish");
System.out.println(cat2);
cat2.getVoice();
}

}



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

Triangle.java
package com.gmail.taa;

public class Triangle {

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

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

public Triangle() {
super();
}

public double getA() {
return a;
}

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

public double getB() {
return b;
}

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

public double getC() {
return c;
}

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

public double square() {
double p = (a + b + c) / 2;
double s = Math.sqrt(p * (p - a) * (p - b) * (p - c));
return s;
}

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

}


Main.java
package com.gmail.taa;

public class Main {

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

Triangle triangle1 = new Triangle(3,3,3);
System.out.println(triangle1);
System.out.println("Square= "+triangle1.square());

System.out.println();

Triangle triangle2 = new Triangle(4,4,4);
System.out.println(triangle2);
System.out.println("Square= "+triangle2.square());
}

}

Название: Re: Java_OOP_Alexander_Beresteyka_11_01_2020
Отправлено: Alexander Ts от Января 14, 2020, 11:31:51 pm
Random
Телефоны и все все все.
Как вы помните логику работы метода которую я описывал на лекции. Если в сети зарегистрирован номер телефона на который вы совершаете вызов, то должен быть вызван метод ВХОДЯЩИЙ звонок у того телефона на номер которого вы совершаете вызов. У вас такого метода нет, как следствие ваше решение не соответствует условию задачи.

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

A.Tuliuliuk
Решение верное
Название: Re: Java_OOP_Alexander_Beresteyka_11_01_2020
Отправлено: Random от Января 15, 2020, 12:56:52 pm
Александр, спасибо за замечания. Постараюсь подправить.

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

package com.gmail.iaroslavakorenovska;

public abstract class Shape {
abstract double getPerimetr();

abstract double getArea();
}

package com.gmail.iaroslavakorenovska;

public class Point {

// Fields
private double x;
private double y;

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

public Point() {
super();
}

//Setters and Getters
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;
}

// Methods
public double distance(Point A) {
return Math.sqrt(Math.pow(this.x-A.x,2)+Math.pow(this.y-A.y,2));
}

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

}

package com.gmail.iaroslavakorenovska;

public class Triangle extends Shape {

// Fields
private Point A;
private Point B;
private Point C;

// Constructors
public Triangle(Point a, Point b, Point c) {
super();
A = a;
B = b;
C = c;
}

public Triangle() {
super();
}

// Setters and Getters
public Point getA() {
return A;
}

public void setA(Point a) {
A = a;
}

public Point getB() {
return B;
}

public void setB(Point b) {
B = b;
}

public Point getC() {
return C;
}

public void setC(Point c) {
C = c;
}

// Methods

@Override
double getPerimetr() {
return A.distance(B) + B.distance(C) + C.distance(A);
};

@Override
double getArea() {
double p = this.getPerimetr() / 2;
return Math.sqrt(p * (p - A.distance(B)) * (p - B.distance(C)) * (p - C.distance(A)));
}

@Override
public String toString() {
return "Triangle [A=" + A + ", B=" + B + ", C=" + C + "]";
};

}

package com.gmail.iaroslavakorenovska;

public class Circle extends Shape {

// Fields
private Point center;
private Point A;

// Constructors

public Circle(Point center, Point a) {
super();
this.center = center;
A = a;
}

public Circle() {
super();
}

// Setters&Getters

public Point getCenter() {
return center;
}

public void setCenter(Point center) {
this.center = center;
}

public Point getA() {
return A;
}

public void setA(Point a) {
A = a;
}

// Methods

@Override
double getPerimetr() {
return 2 * Math.PI * A.distance(center);
};

@Override
double getArea() {
return Math.PI * Math.pow(A.distance(center), 2);
}

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

}

package com.gmail.iaroslavakorenovska;

public class Quadrangle extends Shape {
// Fields
private Point A;
private Point B;
private Point C;
private Point D;

// Constructors

public Quadrangle(Point a, Point b, Point c, Point d) {
super();
A = a;
B = b;
C = c;
D = d;
}

public Quadrangle() {
super();
}

// Getters&Setters

public Point getA() {
return A;
}

public void setA(Point a) {
A = a;
}

public Point getB() {
return B;
}

public void setB(Point b) {
B = b;
}

public Point getC() {
return C;
}

public void setC(Point c) {
C = c;
}

public Point getD() {
return D;
}

public void setD(Point d) {
D = d;
}

//Methods

@Override
double getPerimetr() {
return (A.distance(B) + B.distance(C) + C.distance(D) + D.distance(A));
};

@Override
double getArea() {
Triangle tr1=new Triangle(A,B,C);
Triangle tr2=new Triangle(B,C,D);
return tr1.getArea()+tr2.getArea();
}

@Override
public String toString() {
return "Quadrangle [A=" + A + ", B=" + B + ", C=" + C + ", D=" + D + "]";
};


}

package com.gmail.iaroslavakorenovska;

import java.util.Arrays;

public class Board {

// Fields
private Shape[] board = new Shape[4];

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

public Board() {
super();
}

// Setters&Getters
public Shape[] getBoard() {
return board;
}

public void setBoard(Shape[] board) {
this.board = board;
}

// Methods
public void put(Shape shape, int n) {
if ((n < 4) && (n >= 0)) {
board[n] = shape;
} else {
System.out.println("Your board doesn't has this part");
}
}

public void delete(Shape shape) {
for (int i = 0; i < 4; i++) {
if (board[i] == shape) {
board[i] = null;
continue;
}
}
}

public void info() {
System.out.println("Your board:");
double sumArea = 0;
for (int i = 0; i < 4; i++) {
if (board[i] == null) {
System.out.println("This part is empty");
} else {
System.out.println(board[i].toString() + ", Perimeter= " + board[i].getPerimetr() + ", Area= "
+ board[i].getArea());
sumArea += board[i].getArea();
}
}
System.out.println("Sum of areas= " + sumArea);
}

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

}

package com.gmail.iaroslavakorenovska;

public class Main {

public static void main(String[] args) {
// TODO Auto-generated method stub
Point A = new Point(0, 0);
Point B = new Point(0, 2);
Point C = new Point(2, 0);
Point D = new Point(2, 2);

Triangle tr1 = new Triangle(A, B, C);
Triangle tr2 = new Triangle(C, D, A);
Circle circle = new Circle(A, C);
Quadrangle q1 = new Quadrangle(A, C, D, B);

Board board0 = new Board();
board0.info();

Shape[] b = { tr1, tr2, circle, q1 };
Board board = new Board(b);
board.info();

board.delete(circle);
board.info();

board.put(circle, 2);
board.put(circle, 1);
board.delete(circle);
board.info();
}

}
Название: Re: Java_OOP_Alexander_Beresteyka_11_01_2020
Отправлено: Alexander Ts от Января 15, 2020, 01:29:24 pm

Random

Решение верное
Название: Re: Java_OOP_Alexander_Beresteyka_11_01_2020
Отправлено: Nikolay30 от Января 15, 2020, 05:23:08 pm
1.Описать класс «Cat» (в качестве образца можно взять домашнего питомца). Наделить его свойствами и методами. Создать несколько экземпляров объектов этого класса. Использовать эти объекты.
package net.ukr.Fant0mas;

public class Cat {
private int age;
private double weight;
private double length;
private String color;
private boolean breed;

public Cat(int age, double weight, double length, String color, boolean breed) {

this.age = age;
this.weight = weight;
this.length = length;
this.color = color;
this.breed = breed;
}

public int getAge() {
return age;
}

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

public double getWeight() {
return weight;
}

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

public double getLength() {
return length;
}

public void setLength(double length) {
this.length = length;
}

public String getColor() {
return color;
}

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

public boolean isBreed() {
return breed;
}

public void setBreed(boolean breed) {
this.breed = breed;
}

public void getVoice() {
System.out.println("Mrrrrr");
}

public void getHair() {
System.out.println("You got hair in your flat");
}

public String infoCat() {
return "This cat has" + " " + age + "-age," + weight + "-weight," + length + "-length," + color + "-color,"
+ breed + "-breed";
}
}


package net.ukr.Fant0mas;

public class ChoisePet {

public static void main(String[] args) {
Cat cat1 = new Cat(2, 2.3, 1.5, "Black", true);
Cat cat2 = new Cat(3, 4.5, 2.1, "White", false);
System.out.print("If you have cat - ");
cat1.getHair();
System.out.println();
System.out.println("Age" + " - " + cat1.getAge());
System.out.println("Weigth" + " - " + cat1.getWeight());
System.out.println("Length" + " - " + cat1.getLength());
System.out.println("Color" + " - " + cat1.getColor());
System.out.println("He or she has breed?" + " - " + cat1.isBreed());
cat1.getVoice();
System.out.println(cat2.infoCat());

}

}

Название: Re: Java_OOP_Alexander_Beresteyka_11_01_2020
Отправлено: Nikolay30 от Января 15, 2020, 06:39:59 pm
Описать класс «Triangle». В качестве свойств возьмите длины сторон треугольника. Реализуйте метод, который будет возвращать площадь этого треугольника. Создайте несколько объектов этого класса и протестируйте их.
package net.ukr.FANT0Mas;

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

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

public 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 String Test() {
if (a + b > c && a + c > b && b + c > a) {
return "Takoy treygolnik syshestvyet";
} else
return "Takogo treygolnika ne syshestvyet";

}

public double Area() {
double p;
double area;
p = (a + b + c) / 2;
area = Math.sqrt(p * (p - a) * (p - b) * (p - c));
return area;
}
}


package net.ukr.FANT0Mas;

public class MainTriangle {

public static void main(String[] args) {
Triangle triangle1 = new Triangle(1.4, 1.6, 1.9);
Triangle triangle2 = new Triangle(1.2, 1.3, 10);
System.out.println(triangle1.Test());
System.out.println(triangle2.Test());
System.out.println("Dly pervogo treygolnika ploshad = " + triangle1.Area());

}

}

Название: Re: Java_OOP_Alexander_Beresteyka_11_01_2020
Отправлено: Alexander Ts от Января 16, 2020, 12:31:21 am
Nikolay30
Задание 1.
Отсутствует конструктор по умолчанию.
Метод возвращающий строку с описанием объекта принято называть toString()

Задание 2
Отсутствует конструктор по умолчанию.

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

        public String Test() {
        public double Area() {
В остальном решение верно
Название: Re: Java_OOP_Alexander_Beresteyka_11_01_2020
Отправлено: Random от Января 17, 2020, 12:34:41 am
Задача с телефонами

package com.gmail.iaroslavakorenovska;

public class Phone {

// Fields
private int number;
private String model;
private Network network;

// Constructors

public Phone(int number, Network network) {
super();
this.number = number;
this.network = network;
}

public Phone(int number) {
super();
this.number = number;
}

public Phone() {
super();
}

// Getters&Setters
public int getNumber() {
return number;
}

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

public String getModel() {
return model;
}

public void setModel(String model) {
this.model = model;
}

public Network getNetwork() {
return network;
}

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

// Methods

public boolean exist(Network network) {
boolean p = false;
for (int i = 0; i < network.getNet().length; i++) {
if (number == network.getNet()[i]) {
p = true;
this.setNetwork(network);
break;
}
}
return p;
}

public void register(Network network) {
if (exist(network) == false) {
int[] newNet = new int[network.getNet().length + 1];
System.arraycopy(network.getNet(), 0, newNet, 0, network.getNet().length);
newNet[network.getNet().length] = number;
network.setNet(newNet);
System.out.println("Your number successfully registered in the Network");
} else {
System.out.println("This number has been already existed in the Network");
}
}

public void inCall(int number) {
System.out.println(number + " is calling to you");
}

public void call(int number, Network network) {
Phone newPhone = new Phone(number);
if (this.number == number) {
System.out.println("You can't call to yourself");
} else {
if (newPhone.exist(network)) {
newPhone.inCall(this.number);
} else {
System.out.println("This number doesn't exist!");
}
}

}


package com.gmail.iaroslavakorenovska;

import java.util.Arrays;

public class Network {

//Fields
private String name;
private int[] net;

// Constructors
public Network(String name, int[] net) {
super();
this.name = name;
this.net = net;
}

public Network() {
super();
}

// Getters&Setters
public String getName() {
return name;
}

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

public int[] getNet() {
return net;
}

public void setNet(int[] net) {
this.net = net;
}

// Methods

public boolean numberInNet(int number) {
boolean p = false;
for (int i = 0; i < this.getNet().length; i++) {
if (number == this.getNet()[i]) {
p = true;
break;
}
}
return p;
}

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

}

package com.gmail.iaroslavakorenovska;

public class Main {

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

// Create Network1
int[] net1 = new int[1000000000];
for (int i = 0; i < net1.length; i++) {
net1[i] = i;
}

Network network1 = new Network("New Network1", net1);

//Create Network2

int[] net2 = new int[100];
net2[0] = (int) (Math.random() * 10000000000L + 1000000000);
for (int i = 1; i < net2.length; i++) {
net2[i] = net2[i - 1] + 1;
}

Network network2 = new Network("New Network2", net2);
//Create Phones
Phone phone1 = new Phone(1234567);
System.out.println(phone1.exist(network1));
phone1.register(network1);

Phone phone2 = new Phone(1234567870);
System.out.println(phone2.exist(network2));
phone2.register(network2);

Phone phone3 = new Phone(123);
System.out.println(phone3.exist(network1));
phone3.register(network1);

//Lets call
phone1.call(phone3.getNumber(), network1);
phone1.call(phone3.getNumber(), network2);
phone2.call(phone1.getNumber(), network1);
phone3.call(phone1.getNumber(), network1);
phone3.call(phone2.getNumber(), network2);

}

}
Название: Re: Java_OOP_Alexander_Beresteyka_11_01_2020
Отправлено: Ts.Tatyana от Января 17, 2020, 12:12:54 pm
 Описать класс «Triangle». В качестве свойств возьмите длины сторон треугольника. Реализуйте метод, который будет возвращать площадь этого треугольника. Создайте несколько объектов этого класса и протестируйте их
package com.gmail.ts;

import java.lang.Math;

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

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

public 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 s() {
double p = (a + b + c) / 2;
double s = Math.sqrt(p * (p - a) * (p - b) * (p - c));
return s;
}

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

public class Main {

public static void main(String[] args) {
Triangle a = new Triangle(5, 7, 3);
Triangle b = new Triangle(4, 6, 5);

System.out.println(a);
System.out.println(b);
System.out.println("Sa = " + a.s());
System.out.println("Sb = " + b.s());
}

}
Название: Re: Java_OOP_Alexander_Beresteyka_11_01_2020
Отправлено: Artem Khmelov от Января 17, 2020, 09:05:13 pm
Лекция 1 - Задачи 1-3 (https://github.com/khmelik/Lesson1HomeWork/tree/master/src)
Название: Re: Java_OOP_Alexander_Beresteyka_11_01_2020
Отправлено: Alexander Ts от Января 17, 2020, 11:10:31 pm
Random
И опять вынужден вас расстроить. Как вы помните по условию у метода исходящий звонок должен быть только ОДИН параметр. У вас же:
        public void call(int number, Network network) {
Что не соответствует условию задания
Хотя решение уже весьма неплохое.

Ts.Tatyana
Решение верное

Artem Khmelov
Решение верное
Название: Re: Java_OOP_Alexander_Beresteyka_11_01_2020
Отправлено: Artem Khmelov от Января 18, 2020, 12:31:51 am
Лекция 2 - Задачи 1-3 (https://github.com/khmelik/OOP/tree/master/src)
Название: Re: Java_OOP_Alexander_Beresteyka_11_01_2020
Отправлено: Ts.Tatyana от Января 18, 2020, 12:32:40 am
1. Создайте абстрактный класс Shape, в котором есть два абстрактных метода double getPerimetr() и double getArea(). 2. Создайте класс Point, в котором есть два свойства double x double y. 3. Создайте классы, которые описывают, как минимум, три геометрические фигуры (они должны быть подклассами Shape). При этом они в качестве свойств должны содержать классы Point.
package com.gmail.ts;

public abstract class Shape{
abstract double getPerimetr();
abstract double getArea();
}
package com.gmail.ts;

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

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

public double getLength(Point n) {
return Math.sqrt(Math.pow(this.x - n.x, 2) + Math.pow(this.y - n.y, 2));
}

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

}
package com.gmail.ts;

public class Square extends Shape {
private Point a;
private Point b;
private Point c;
private Point d;

public Square(Point a, Point b, Point c, Point d) {
super();
this.a = a;
this.b = b;
this.c = c;
this.d = d;
}

public Point getA() {
return a;
}

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

public Point getB() {
return b;
}

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

public Point getC() {
return c;
}

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

public Point getD() {
return d;
}

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

@Override
double getPerimetr() {
return a.getLength(b)+b.getLength(c)+c.getLength(d)+d.getLength(a);
}

@Override
double getArea() {
return Math.pow(a.getLength(b), 2);
}

}
package com.gmail.ts;

public class Triangle extends Shape {
private Point a;
private Point b;
private Point c;

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

public Point getA() {
return a;
}

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

public Point getB() {
return b;
}

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

public Point getC() {
return c;
}

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

@Override
double getPerimetr() {
return a.getLength(b) + b.getLength(c) + c.getLength(a);
}

@Override
double getArea() {
double p = (a.getLength(b) + b.getLength(c) + c.getLength(a)) / 2;
return Math.sqrt(p * (p - a.getLength(b)) * (p - b.getLength(c)) * (p - c.getLength(a)));
}

}
package com.gmail.ts;

public class Circle extends Shape {
private Point o;
private Point a;

public Circle(Point o, Point a) {
super();
this.o = o;
this.a = a;
}

public Point getO() {
return o;
}

public void setO(Point o) {
this.o = o;
}

public Point getA() {
return a;
}

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

@Override
double getPerimetr() {
return 2 * Math.PI * o.getLength(a);
}

@Override
double getArea() {
return Math.PI * Math.pow(o.getLength(a), 2);
}

}
package com.gmail.ts;

public class Main {

public static void main(String[] args) {

Point a = new Point(3, 3);
Point b = new Point(4, 10);
Point c = new Point(1, 5);
Point d = new Point(2, 8);

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

System.out.println("S triangle = " + triangle.getArea());
System.out.println("P triangle = " + triangle.getPerimetr());

Square square = new Square(a, b, c, d);

System.out.println("P square = " + square.getPerimetr());
System.out.println("S square = " + square.getArea());

Circle circle = new Circle(a, b);

System.out.println("P circle = " + circle.getPerimetr());
System.out.println("S circle = " + circle.getArea());
}

}
Название: Re: Java_OOP_Alexander_Beresteyka_11_01_2020
Отправлено: Nikolay30 от Января 18, 2020, 10:50:17 am
1. Создайте абстрактный класс Shape, в котором есть два абстрактных метода double getPerimetr() и double getArea(). 2. Создайте класс Point, в котором есть два свойства double x double y. 3. Создайте классы, которые описывают, как минимум, три геометрические фигуры (они должны быть подклассами Shape). При этом они в качестве свойств должны содержать классы Point.
package net.ukr.FANT0Mas;

public abstract class Shape {
abstract double getPerimetr();

abstract double getArea();

}


package net.ukr.FANT0Mas;

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

public double distance(Point X) {
return Math.sqrt(Math.pow(this.x - X.x, 2) + Math.pow(this.y - X.y, 2));
}

}


package net.ukr.FANT0Mas;

public class Triangle extends Shape {
private Point A;
private Point B;
private Point C;

public Triangle(Point A, Point B, Point C) {
super();
this.A = A;
this.B = B;
this.C = C;
}

public Triangle() {
super();
}

public Point getA() {
return A;
}

public void setA(Point a) {
A = a;
}

public Point getB() {
return B;
}

public void setB(Point b) {
B = b;
}

public Point getC() {
return C;
}

public void setC(Point c) {
C = c;
}

@Override
double getPerimetr() {
return A.distance(B) + B.distance(C) + C.distance(A);
}

@Override
double getArea() {
double p = getPerimetr() / 2;
return Math.sqrt(p * (p - A.distance(B)) * (p - B.distance(C)) * (p - C.distance(A)));
}
}


package net.ukr.FANT0Mas;

public class Circle extends Shape {
private Point A;
private Point B;

public Circle(Point A, Point B) {
super();
this.A = A;
this.B = B;
}

public Circle() {
return;
}

public Point getA() {
return A;
}

public void setA(Point a) {
A = a;
}

public Point getB() {
return B;
}

public void setB(Point b) {
B = b;
}

@Override
double getPerimetr() {
return A.distance(B) * 2 * Math.PI;
}

@Override
double getArea() {
return A.distance(B) * 2 * Math.PI * A.distance(B);
}

}


package net.ukr.FANT0Mas;

public class MainTask {

public static void main(String[] args) {
Point A = new Point(2.2, 3.1);
Point B = new Point(4.3, 5.1);
Point C = new Point(1, 7);

Triangle tr = new Triangle(A, B, C);
System.out.println("Perimetr treygolnika = " + tr.getPerimetr());
System.out.println("Ploshad treygolnika = " + tr.getArea());
Circle cr=new Circle(A,B);
System.out.println("Perimetr kruga = "+cr.getPerimetr());
System.out.println("Ploshad kruga = "+cr.getArea());
}

}

Название: Re: Java_OOP_Alexander_Beresteyka_11_01_2020
Отправлено: e.tulyulyuk от Января 18, 2020, 12:57:25 pm
1) Описать класс «Cat» (в качестве образца можно взять домашнего питомца).
Наделить его свойствами и методами. Создать несколько экземпляров объектов
этого класса. Использовать эти объекты

cat.java
package com.gmail.elena;

public class cat {

private String name;
private String sex;
private double age;
private String color;
private String food;

public cat(String name, String sex, double age, String color, String food) {

this.name = name;
this.sex = sex;
this.age = age;
this.color = color;
this.food = food;

}

public cat() {
super();
}

public String getName() {
return name;
}

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

public String getSex() {
return sex;
}

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

public double getAge() {
return age;
}

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

public String getColor() {
return color;
}

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

public String getFood() {
return food;
}

public void setFood(String food) {
this.food = food;
}

public void getVoice() {
System.out.println("Мяу-мяу");
}

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

}


Main.java
package com.gmail.elena;

public class Main {

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

cat cat1 = new cat("Mur", "Women", 5, "Black", "Milk");
System.out.println(cat1);
cat1.getVoice();

System.out.println();

cat cat2 = new cat("Rizhik", "Men", 2, "Orange", "Feed");
System.out.println(cat2);
cat2.getVoice();
}

}

Название: Re: Java_OOP_Alexander_Beresteyka_11_01_2020
Отправлено: Alexander Ts от Января 18, 2020, 11:08:12 pm
Artem Khmelov
Решение верное


Ts.Tatyana
Решение верное

Nikolay30
Имена переменных в Java принято записывать с маленькой буквы. Так что такие имена неудачны:

public class Triangle extends Shape {
        private Point A;
        private Point B;
        private Point C;

Имена стоит записывать с маленькой буквы.
В остальном решение верное

Е.tulyulyuk
Имена классов принято записывать с большой буквы. Так, что такие имена не верны.

public class cat {
Имен классов следует записывать с Большой буквы

В остальном решение верное.
Название: Re: Java_OOP_Alexander_Beresteyka_11_01_2020
Отправлено: Random от Января 22, 2020, 12:59:11 am
Задача. Создайте класс, описывающий человека (создайте метод, выводящий информацию о человеке).
На его основе создайте класс студент (переопределите метод вывода информации).
Создайте класс Группа, который содержит массив из 10 объектов класса Студент.
Реализуйте методы добавления, удаления студента и метод поиска студента по фамилии.
В случае попытки добавления 11 студента, создайте собственное исключение и обработайте его.

package com.gmail.iaroslavakorenovska;

public class Human {


//Fields
private String name;
private String surname;
private int age;
private boolean sex;

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

public Human() {
super();
}

//Getters&Setters

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

public boolean isSex() {
return sex;
}

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

//Methods

public void info() {
System.out.println("Human: [name=" + name + ", surname= " + surname + ", age= " + age + ", sex= " + sex + "]");
}

@Override
public String toString() {
return "Human [name=" + name + ", surname=" + surname + ", age=" + age + ", sex=" + sex + "]";
}

}

package com.gmail.iaroslavakorenovska;

public class Student extends Human {

// Fields
private int numberOfGroup;
private int numberOfRecordBook;

// Constructors
public Student(String name, String surname, int age, boolean sex, int numberOfGroup, int numberOfRecordBook) {
super(name, surname, age, sex);
this.numberOfGroup = numberOfGroup;
this.numberOfRecordBook = numberOfRecordBook;
}

public Student(String name, String surname, int age, boolean sex) {
super(name, surname, age, sex);
}

public Student() {
super();
}

// Getters&Setters
public int getNumberOfGroup() {
return numberOfGroup;
}

public void setNumberOfGroup(int numberOfGroup) {
this.numberOfGroup = numberOfGroup;
}

public int getNumberOfRecordBook() {
return numberOfRecordBook;
}

public void setNumberOfRecordBook(int numberOfRecordBook) {
this.numberOfRecordBook = numberOfRecordBook;
}

// Methods
@Override
public void info() {
System.out.println("Student: [name=" + super.getName() + ", surname= " + super.getSurname() + ", age= "
+ super.getAge() + ", sex= " + super.isSex() + ", numberOfGroup=" + numberOfGroup
+ ", numberOfRecordBook=" + numberOfRecordBook + "]");
}

@Override
public String toString() {
return "Student: "+ super.toString()+ "[numberOfGroup=" + numberOfGroup + ", numberOfRecordBook=" + numberOfRecordBook + "]";
}
}

package com.gmail.iaroslavakorenovska;

import java.util.Arrays;

public class Group {

//Fields
private Student[] group = new Student[10];

//Constructors
public Group(Student[] group) {
super();
this.group = group;
}

public Group() {
super();
}

// Getters&Setters
public Student[] getGroup() {
return group;
}

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

// Methods
public int searchStudentInGroup(Student student) {
int numberInGroup = -1;
for (int i = 0; i < 10; i++) {
try {
if (group[i].getNumberOfRecordBook() == student.getNumberOfRecordBook()) {
numberInGroup = i;
break;
}
} catch (NullPointerException e) {
numberInGroup = -1;
continue;
}
}
return numberInGroup;
}

public Student[] addStudentInGroup(Student student) {
try {
if (this.searchStudentInGroup(student) < 0) {
int j = -1;
for (int i = 0; i < 10; i++) {
if (group[i] == null) {
j = i;
group[i] = student;
break;
}
}
if (j < 0) {
throw new MyException();
}
} else {
System.out.println("You can't add this student because he studies in your group");
}
} catch (MyException e) {
System.out.println(e.toString());
}
return group;
}

public Student[] deleteStudentFromGroup(Student student) {
for (int i = 0; i < group.length; i++) {
if (group[i].getNumberOfRecordBook() == student.getNumberOfRecordBook()) {
group[i] = null;
break;
}
}
return group;
}

public Student searchStudentInGroupBySurname(String surname) {
Student student = new Student();
for (int i = 0; i < group.length; i++) {
if (group[i].getSurname().equalsIgnoreCase(surname)) {
student = group[i];
break;
}
}
return student;
}

// Если есть однофамильцы
public Student[] searchStudentsInGroupBySurname(String surname) {
Student[] studentsSameSurname = new Student[10];
for (int i = 0; i < group.length; i++) {
if (group[i].getSurname().equalsIgnoreCase(surname)) {
studentsSameSurname[i] = group[i];
continue;
}
}
return studentsSameSurname;
}

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

}

package com.gmail.iaroslavakorenovska;

public class MyException extends Exception{

@Override
public String toString() {
return "Too many students in your group";
}

}

package com.gmail.iaroslavakorenovska;

import java.util.Arrays;

public class Main {

public static void main(String[] args) {
// TODO Auto-generated method stub
Human human1 = new Human("Name1", "Surname1", 20, true);
human1.info();

// Create new group
Group group = new Group();

String name = "Name";
String surname = "Surname";
int age = 16;
boolean sex = true;
int numberOfGroup = 1;
int numberOfRecordBook = 1;

for (int i = 0; i < 10; i++) {
group.addStudentInGroup(
new Student(name + i, surname + i, age + i, sex, numberOfGroup, numberOfRecordBook + i));
sex = !sex;
}
System.out.println(group.toString());

// Methods control
group.addStudentInGroup(new Student("B", "Surname7", 16, true, 1, 11));

System.out.println(group.searchStudentInGroupBySurname("Surname7"));
System.out.println(Arrays.toString(group.searchStudentsInGroupBySurname("Surname7")));

group.deleteStudentFromGroup(group.getGroup()[0]);
System.out.println(group.toString());

group.addStudentInGroup(new Student("A", "Surname7", 16, true, 1, 0));
System.out.println(group.toString());

System.out.println(Arrays.toString(group.searchStudentsInGroupBySurname("Surname7")));

group.addStudentInGroup(new Student("A", "Surname7", 16, true, 1, 0));

}

}

Название: Re: Java_OOP_Alexander_Beresteyka_11_01_2020
Отправлено: Random от Января 23, 2020, 01:23:35 pm
Часть д\з по интерфейсам
Задача: Реализуйте возможность сортировки списка студентов по фамилии

package com.gmail.iaroslavakorenovska;

import java.util.Comparator;

public class BySurnameComparator implements Comparator {
@Override
public int compare(Object o1, Object o2) {
Student a = (Student) o1;
Student b = (Student) o2;

if (a != null && b == null) {
return 1;
}

if (a == null && b != null) {
return -1;
}
if (a == null && b == null) {
return 0;
}

else {

return a.getSurname().compareToIgnoreCase(b.getSurname());
}
}

}

Задача: Реализуйте интерфейс Военком, который вернет из группы массив студентов - юношей, которым больше 18 лет.

package com.gmail.iaroslavakorenovska;

public interface Voenkom {
public Student[] recrut();
}

package com.gmail.iaroslavakorenovska;

import java.util.Arrays;

public class Group implements Voenkom {

// Fields
private Student[] group = new Student[10];

//Constructors
public Group(Student[] group) {
super();
this.group = group;
}

public Group() {
super();
}

// Getters&Setters
public Student[] getGroup() {
return group;
}

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

// Methods
public int searchStudentInGroup(Student student) {
int numberInGroup = -1;
for (int i = 0; i < 10; i++) {
try {
if (group[i].getNumberOfRecordBook() == student.getNumberOfRecordBook()) {
numberInGroup = i;
break;
}
} catch (NullPointerException e) {
numberInGroup = -1;
continue;
}
}
return numberInGroup;
}

public Student[] addStudentInGroup(Student student) {
try {
if (this.searchStudentInGroup(student) < 0) {
int j = -1;
for (int i = 0; i < 10; i++) {
if (group[i] == null) {
j = i;
group[i] = student;
break;
}
}
if (j < 0) {
throw new MyException();
}
} else {
System.out.println("You can't add this student because he studies in your group");
}
} catch (MyException e) {
System.out.println(e.toString());
}
return group;
}

public Student[] deleteStudentFromGroup(Student student) {
for (int i = 0; i < group.length; i++) {
if (group[i].getNumberOfRecordBook() == student.getNumberOfRecordBook()) {
group[i] = null;
break;
}
}
return group;
}

public Student searchStudentInGroupBySurname(String surname) {
Student student = new Student();
for (int i = 0; i < group.length; i++) {
if (group[i].getSurname().equalsIgnoreCase(surname)) {
student = group[i];
break;
}
}
return student;
}

// Если есть однофамильцы
public Student[] searchStudentsInGroupBySurname(String surname) {
Student[] studentsSameSurname = new Student[10];
for (int i = 0; i < group.length; i++) {
if (group[i].getSurname().equalsIgnoreCase(surname)) {
studentsSameSurname[i] = group[i];
continue;
}
}
return studentsSameSurname;
}

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

@Override
public Student[] recrut() {
Group recrutGroup = new Group();
for (int i = 0; i < this.getGroup().length; i++) {
try {
if ((this.getGroup()[i].getAge() > 18) && (this.getGroup()[i].isSex() == true)) {
recrutGroup.addStudentInGroup(this.getGroup()[i]);
}
} catch (NullPointerException e) {
continue;
}
}
return recrutGroup.getGroup();
}

}

package com.gmail.iaroslavakorenovska;

import java.util.Arrays;

public class Main {

public static void main(String[] args) {
// TODO Auto-generated method stub
Human human1 = new Human("Name1", "Surname1", 20, true);
human1.info();

// Create new group
Group group = new Group();

String name = "Name";
String surname = "Surname";
int age = 16;
boolean sex = true;
int numberOfGroup = 1;
int numberOfRecordBook = 1;

for (int i = 0; i < 10; i++) {
group.addStudentInGroup(
new Student(name + i, surname + i, age + i, sex, numberOfGroup, numberOfRecordBook + i));
sex = !sex;
}
System.out.println(group.toString());

// Methods control

System.out.println("Recrut Group: " + Arrays.toString(group.recrut()));

Arrays.sort(group.getGroup(), new BySurnameComparator().reversed());
System.out.println(group.toString());

}

}
Название: Re: Java_OOP_Alexander_Beresteyka_11_01_2020
Отправлено: Random от Января 23, 2020, 03:07:54 pm
Задача: Реализуйте возможность сортировки списка студентов по параметру

package com.gmail.iaroslavakorenovska;

import java.util.Comparator;

public class ByParameterComparator implements Comparator {

private String parameter;

// Constructors

public ByParameterComparator() {
super();
}

public ByParameterComparator(String parameter) {
super();
this.parameter = parameter;
}

// Getters&Setters

public String getParameter() {
return parameter;
}

public void setParameter(String parameter) {
this.parameter = parameter;
}

public int compare(Object o1, Object o2) {
Student a = (Student) o1;
Student b = (Student) o2;

if (a != null && b == null) {
return 1;
}

if (a == null && b != null) {
return -1;
}
if (a == null && b == null) {
return 0;
}

if (this.parameter.equalsIgnoreCase("name") | (this.parameter.equalsIgnoreCase("1"))) {
return a.getName().compareToIgnoreCase(b.getName());
} else {
if (this.parameter.equalsIgnoreCase("surname") | (this.parameter.equalsIgnoreCase("2"))) {
return a.getSurname().compareToIgnoreCase(b.getSurname());
}
if (this.parameter.equalsIgnoreCase("age") | (this.parameter.equalsIgnoreCase("3"))) {
Integer aAge = a.getAge();
Integer bAge = b.getAge();
return aAge.compareTo(bAge);
} else {
return 0;

}
}
}

}

package com.gmail.iaroslavakorenovska;

import java.util.Arrays;

public class Main {

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

// Create new group
Group group = new Group();

String name = "Name";
String surname = "Surname";
int age = 16;
boolean sex = true;
int numberOfGroup = 1;
int numberOfRecordBook = 1;

for (int i = 0; i < 10; i++) {
group.addStudentInGroup(
new Student(name + i, surname + i, age + i, sex, numberOfGroup, numberOfRecordBook + i));
sex = !sex;
}
System.out.println(group.toString());

// Methods control

Arrays.sort(group.getGroup(), new ByParameterComparator("1").reversed());
System.out.println(group.toString());

Arrays.sort(group.getGroup(), new ByParameterComparator("SUrname"));
System.out.println(group.toString());

Arrays.sort(group.getGroup(), new ByParameterComparator("3").reversed());
System.out.println(group.toString());

}

}
Название: Re: Java_OOP_Alexander_Beresteyka_11_01_2020
Отправлено: feynss от Января 23, 2020, 04:10:47 pm
1. Создайте абстрактный класс Shape, в котором есть два абстрактных метода double getPerimetr() и double getArea().
2. Создайте класс Point, в котором есть два свойства double x double y.
3. Создайте классы, которые описывают, как минимум, три геометрические фигуры (они должны быть подклассами Shape). При этом они в качестве свойств должны содержать классы Point.

package com.gmail.feynss;

public abstract class Shape{

abstract double getPerimetr();
abstract double getArea();
}

package com.gmail.feynss;

public class Point {

private double x;
private double y;

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

public double getLength(Point n) {
return Math.sqrt(Math.pow(this.x - n.x, 2) + Math.pow(this.y - n.y, 2));
}

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

}

package com.gmail.feynss;

public class Square extends Shape {

private Point a;
private Point b;
private Point c;
private Point d;

public Square(Point a, Point b, Point c, Point d) {
super();
this.a = a;
this.b = b;
this.c = c;
this.d = d;
}

public Point getA() {
return a;
}

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

public Point getB() {
return b;
}

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

public Point getC() {
return c;
}

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

public Point getD() {
return d;
}

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


package com.gmail.feynss;

public class Triangle extends Shape {

private Point a;
private Point b;
private Point c;

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

public Point getA() {
return a;
}

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

public Point getB() {
return b;
}

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

public Point getC() {
return c;
}

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

@Override
double getPerimetr() {
return a.getLength(b) + b.getLength(c) + c.getLength(a);
}

@Override
double getArea() {
double p = (a.getLength(b) + b.getLength(c) + c.getLength(a)) / 2;
return Math.sqrt(p * (p - a.getLength(b)) * (p - b.getLength(c)) * (p - c.getLength(a)));
}

}

package com.gmail.feynss;

public class Circle extends Shape {

private Point o;
private Point a;

public Circle(Point o, Point a) {
super();
this.o = o;
this.a = a;
}

public Point getO() {
return o;
}

public void setO(Point o) {
this.o = o;
}

public Point getA() {
return a;
}

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

@Override
double getPerimetr() {
return 2 * Math.PI * o.getLength(a);
}

@Override
double getArea() {
return Math.PI * Math.pow(o.getLength(a), 2);
}

}

package com.gmail.feynss;

public class Main {

public static void main(String[] args) {

Point a = new Point(3, 3);
Point b = new Point(4, 10);
Point c = new Point(1, 5);
Point d = new Point(2, 8);

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

System.out.println("S triangle = " + triangle.getArea());
System.out.println("P triangle = " + triangle.getPerimetr());

Square square = new Square(a, b, c, d);

System.out.println("P square = " + square.getPerimetr());
System.out.println("S square = " + square.getArea());

Circle circle = new Circle(a, b);

System.out.println("P circle = " + circle.getPerimetr());
System.out.println("S circle = " + circle.getArea());
}

}
Название: Re: Java_OOP_Alexander_Beresteyka_11_01_2020
Отправлено: Alexander Ts от Января 24, 2020, 12:00:01 am
Random
А почему у вас метод добавления студента возвращает массив студентов?

        public Student[] addStudentInGroup(Student student) {
Метод
        public Student[] deleteStudentFromGroup(Student student) {
Нестабильный. Добавьте в группу только 3 студентов и попробуйте удалить студента которого в этой группе нет. Ваша программа слетит по исключению NullPointerException так как вы обратитесь к null.

Как и методы поиска

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


Feynss
Решение верное
Название: Re: Java_OOP_Alexander_Beresteyka_11_01_2020
Отправлено: Artem Khmelov от Января 24, 2020, 12:24:53 am
Лекция 3 - Задачи 1-3 (https://github.com/khmelik/Lesson3HomeWork/tree/master/src/com/lesson3/homework)
Название: Re: Java_OOP_Alexander_Beresteyka_11_01_2020
Отправлено: Random от Января 24, 2020, 01:36:46 am
Александр, спасибо за замечания. Методы в классе Группа подправила и добавила возможность интерактивного добавления студентов в группу (без учета того, что имена и фамилии могут содержать цифры и прочие символы). 

package com.gmail.iaroslavakorenovska;

public class NegativeValueException extends Exception {

@Override
public String toString() {
// TODO Auto-generated method stub
return "This value must be positive!";
}

}

package com.gmail.iaroslavakorenovska;

import java.util.Arrays;
import javax.swing.JOptionPane;

public class Group implements Voenkom {

// Fields
private Student[] group = new Student[10];

//Constructors
public Group(Student[] group) {
super();
this.group = group;
}

public Group() {
super();
}

// Getters&Setters
public Student[] getGroup() {
return group;
}

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

// Methods
public void interactiveAddStudent() {
Student student = new Student();
if (JOptionPane.showConfirmDialog(null, "Would you like to add a new student?", "Group",
JOptionPane.YES_NO_OPTION) == 0) {
student.setName((String) JOptionPane.showInputDialog("Input student's name"));
student.setSurname((String) JOptionPane.showInputDialog("Input student's surname"));
for (;;) {
try {
int n = Integer.parseInt(JOptionPane.showInputDialog("Input number of student's group"));
if (n > 0) {
student.setNumberOfGroup(n);
break;
} else {
throw new NegativeValueException();
}
} catch (NumberFormatException e) {
JOptionPane.showMessageDialog(null, "Error number format");
} catch (NegativeValueException e) {
JOptionPane.showMessageDialog(null, "Negative value ");
}
}

for (;;) {
try {
int n = Integer.parseInt(JOptionPane.showInputDialog("Input student's age"));
if (n > 0) {
student.setAge(n);
break;
} else {
throw new NegativeValueException();
}
} catch (NumberFormatException e) {
JOptionPane.showMessageDialog(null, "Error number format");
} catch (NegativeValueException e) {
JOptionPane.showMessageDialog(null, "Negative value ");
}
}

for (;;) {
try {
int n = Integer.parseInt(JOptionPane.showInputDialog("Input number of student's record-book"));
if (n > 0) {
student.setNumberOfRecordBook(n);
break;
} else {
throw new NegativeValueException();
}
} catch (NumberFormatException e) {
JOptionPane.showMessageDialog(null, "Error number format");
} catch (NegativeValueException e) {
JOptionPane.showMessageDialog(null, "Negative value ");
}
}

if (JOptionPane.showConfirmDialog(null, "Is this student a man?", "Student",
JOptionPane.YES_NO_OPTION) == 0) {
student.setSex(true);
}
this.addStudentInGroup(student);
}
}

public int searchStudentInGroup(Student student) {
int numberInGroup = -1;
for (int i = 0; i < 10; i++) {
try {
if (group[i].getNumberOfRecordBook() == student.getNumberOfRecordBook()) {
numberInGroup = i;
break;
}
} catch (NullPointerException e) {
numberInGroup = -1;
continue;
}
}
return numberInGroup;
}

public void addStudentInGroup(Student student) {
try {
if (this.searchStudentInGroup(student) < 0) {
int j = -1;
for (int i = 0; i < 10; i++) {
if (group[i] == null) {
j = i;
group[i] = student;
break;
}
}
if (j < 0) {
throw new MyException();
}
} else {
System.out.println("You can't add this student because he studies in your group");
}
} catch (MyException e) {
System.out.println(e.toString());
}
}

public void deleteStudentFromGroup(Student student) {
for (int i = 0; i < group.length; i++) {
try {
if (group[i].getNumberOfRecordBook() == student.getNumberOfRecordBook()) {
group[i] = null;
break;
}}
catch(NullPointerException e) {
continue;
}
}
}

public Student searchStudentInGroupBySurname(String surname) {
Student student = new Student();
for (int i = 0; i < group.length; i++) {
try {
if (group[i].getSurname().equalsIgnoreCase(surname)) {
student = group[i];
break;
}
}
catch(NullPointerException e) {
continue;
}
}
return student;
}

// Если есть однофамильцы
public Student[] searchStudentsInGroupBySurname(String surname) {
Student[] studentsSameSurname = new Student[10];
for (int i = 0; i < group.length; i++) {
try {
if (group[i].getSurname().equalsIgnoreCase(surname)) {
studentsSameSurname[i] = group[i];
continue;
}
}
catch(NullPointerException e) {
continue;
}
}
return studentsSameSurname;
}

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

@Override
public Student[] recrut() {
Group recrutGroup = new Group();
for (int i = 0; i < this.getGroup().length; i++) {
try {
if ((this.getGroup()[i].getAge() > 18) && (this.getGroup()[i].isSex() == true)) {
recrutGroup.addStudentInGroup(this.getGroup()[i]);
}
} catch (NullPointerException e) {
continue;
}
}
return recrutGroup.getGroup();
}

}

package com.gmail.iaroslavakorenovska;

import java.util.Arrays;

public class Main {

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

// Create new group
Group group = new Group();

for (int i = 0; i < 3; i++) {
group.interactiveAddStudent();
}

System.out.println(group.toString());

Student student1 = new Student("name", "surname", 17, true, 1, 101);
group.addStudentInGroup(student1);
System.out.println(group.toString());
Student student2 = new Student("name2", "surname2", 17, true, 1, 202);
group.deleteStudentFromGroup(student2);
System.out.println(group.toString());

}

}
Название: Re: Java_OOP_Alexander_Beresteyka_11_01_2020
Отправлено: Alexander Ts от Января 24, 2020, 02:11:13 pm
Artem Khmelov
Переменные ссылочного типа не сравнивают оператором == (он работает некоректно) . Так что в методе удаления студента такой код некоректен
if (group[i] == student) {
В остальном решение верное


Random
Решение верное
Название: Re: Java_OOP_Alexander_Beresteyka_11_01_2020
Отправлено: Artem Khmelov от Января 24, 2020, 10:07:32 pm
Artem Khmelov
Переменные ссылочного типа не сравнивают оператором == (он работает некоректно) . Так что в методе удаления студента такой код некоректен
if (group[i] == student) {

Alexander Ts
Я правильно понимаю, что оператор == некоректно работает с переменными ссылочного типа так как он сравнивает не значение переменных, а место в памяти куда они ссылаются?
И правильно ли я понимаю, что мой метод  удаления студента работает, но написан не корректно с точки зрения программирования? Или подскажите условия при которых код не работает, чтобы я разобрался.
Спасибо.
Название: Re: Java_OOP_Alexander_Beresteyka_11_01_2020
Отправлено: Random от Января 24, 2020, 11:59:37 pm
Сортировка группы по параметру с помощью лямбда-функций и интерфейса CheckNull из видео к доп.материалам (в класс Группа добавлен метод сортировки sortGroupByParameter)

package com.gmail.iaroslavakorenovska;

import java.util.Arrays;

public class Group {

// Fields
private Student[] group = new Student[10];

//Constructors
public Group(Student[] group) {
super();
this.group = group;
}

public Group() {
super();
}

// Getters&Setters
public Student[] getGroup() {
return group;
}

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

// Methods

public void sortGroupByParameter(String string) {
if (string.equalsIgnoreCase("1")) {
Arrays.sort(this.getGroup(),
(a, b) -> CheckNull.checkNull(a, b) != CheckNull.NOT_NULL ? CheckNull.checkNull(a, b)
: a.getName().compareToIgnoreCase(b.getName()));
}
if (string.equalsIgnoreCase("2")) {
Arrays.sort(this.getGroup(),
(a, b) -> CheckNull.checkNull(a, b) != CheckNull.NOT_NULL ? CheckNull.checkNull(a, b)
: a.getSurname().compareToIgnoreCase(b.getSurname()));
}
if (string.equalsIgnoreCase("3")) {
Arrays.sort(this.getGroup(),
(a, b) -> CheckNull.checkNull(a, b) != CheckNull.NOT_NULL ? CheckNull.checkNull(a, b)
: a.getAge() - b.getAge());
}
if (string.equalsIgnoreCase("4")) {
Arrays.sort(this.getGroup(),
(a, b) -> CheckNull.checkNull(a, b) != CheckNull.NOT_NULL ? CheckNull.checkNull(a, b)
: a.getNumberOfGroup() - b.getNumberOfGroup());
}
if (string.equalsIgnoreCase("5")) {
Arrays.sort(this.getGroup(),
(a, b) -> CheckNull.checkNull(a, b) != CheckNull.NOT_NULL ? CheckNull.checkNull(a, b)
: a.getNumberOfRecordBook() - b.getNumberOfRecordBook());
} else {
System.out.println("There isn't such parameter");
}

}

public int searchStudentInGroup(Student student) {
int numberInGroup = -1;
for (int i = 0; i < 10; i++) {
try {
if (group[i].getNumberOfRecordBook() == student.getNumberOfRecordBook()) {
numberInGroup = i;
break;
}
} catch (NullPointerException e) {
numberInGroup = -1;
continue;
}
}
return numberInGroup;
}

public void addStudentInGroup(Student student) {
try {
if (this.searchStudentInGroup(student) < 0) {
int j = -1;
for (int i = 0; i < 10; i++) {
if (group[i] == null) {
j = i;
group[i] = student;
break;
}
}
if (j < 0) {
throw new MyException();
}
} else {
System.out.println("You can't add this student because he studies in your group");
}
} catch (MyException e) {
System.out.println(e.toString());
}
}

public void deleteStudentFromGroup(Student student) {
for (int i = 0; i < group.length; i++) {
try {
if (group[i].getNumberOfRecordBook() == student.getNumberOfRecordBook()) {
group[i] = null;
break;
}
} catch (NullPointerException e) {
continue;
}
}
}

public Student searchStudentInGroupBySurname(String surname) {
Student student = new Student();
for (int i = 0; i < group.length; i++) {
try {
if (group[i].getSurname().equalsIgnoreCase(surname)) {
student = group[i];
break;
}
} catch (NullPointerException e) {
continue;
}
}
return student;
}

// Если есть однофамильцы
public Student[] searchStudentsInGroupBySurname(String surname) {
Student[] studentsSameSurname = new Student[10];
for (int i = 0; i < group.length; i++) {
try {
if (group[i].getSurname().equalsIgnoreCase(surname)) {
studentsSameSurname[i] = group[i];
continue;
}
} catch (NullPointerException e) {
continue;
}
}
return studentsSameSurname;
}

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

}

package com.gmail.iaroslavakorenovska;

public interface CheckNull {
public int NOT_NULL = 2;

public static int checkNull(Object a, Object b) {
if (a != null && b == null) {
return 1;
}

if (a == null && b != null) {
return -1;
}
if (a == null && b == null) {
return 0;
}
return NOT_NULL;
}
}

package com.gmail.iaroslavakorenovska;

public class Student extends Human {

// Fields
private int numberOfGroup;
private int numberOfRecordBook;

// Constructors
public Student(String name, String surname, int age, boolean sex, int numberOfGroup, int numberOfRecordBook) {
super(name, surname, age, sex);
this.numberOfGroup = numberOfGroup;
this.numberOfRecordBook = numberOfRecordBook;
}

public Student(String name, String surname, int age, boolean sex) {
super(name, surname, age, sex);
}

public Student() {
super();
}

// Getters&Setters
public int getNumberOfGroup() {
return numberOfGroup;
}

public void setNumberOfGroup(int numberOfGroup) {
this.numberOfGroup = numberOfGroup;
}

public int getNumberOfRecordBook() {
return numberOfRecordBook;
}

public void setNumberOfRecordBook(int numberOfRecordBook) {
this.numberOfRecordBook = numberOfRecordBook;
}

// Methods
@Override
public void info() {
System.out.println("Student: [name=" + super.getName() + ", surname= " + super.getSurname() + ", age= "
+ super.getAge() + ", sex= " + super.isSex() + ", numberOfGroup=" + numberOfGroup
+ ", numberOfRecordBook=" + numberOfRecordBook + "]");
}

@Override
public String toString() {
return "Student: "+ super.toString()+ "[numberOfGroup=" + numberOfGroup + ", numberOfRecordBook=" + numberOfRecordBook + "]";
}
}

package com.gmail.iaroslavakorenovska;

public class Human {


//Fields
private String name;
private String surname;
private int age;
private boolean sex;

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

public Human() {
super();
}

//Getters&Setters

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

public boolean isSex() {
return sex;
}

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

//Methods

public void info() {
System.out.println("Human: [name=" + name + ", surname= " + surname + ", age= " + age + ", sex= " + sex + "]");
}

@Override
public String toString() {
return "Human [name=" + name + ", surname=" + surname + ", age=" + age + ", sex=" + sex + "]";
}

}

package com.gmail.iaroslavakorenovska;

public class MyException extends Exception{

@Override
public String toString() {
return "Too many students in your group";
}

}

package com.gmail.iaroslavakorenovska;

import java.util.Scanner;

public class Main {

public static void main(String[] args) {

// Create new group
Group group = new Group();

group.addStudentInGroup(new Student("Vasya", "Petrov", 15, true, 22, 345));
group.addStudentInGroup(new Student("Petya", "Petrov", 16, true, 2, 34));
group.addStudentInGroup(new Student("Inga", "Petrova", 15, false, 23, 3145));
group.addStudentInGroup(new Student("Vlada", "Vasileva", 17, false, 17, 765));
System.out.println(group.toString());

Scanner sc = new Scanner(System.in);
System.out.println("Input integer parameter");
group.sortGroupByParameter(sc.nextLine());
sc.close();
System.out.println(group.toString());

}

}
Название: Re: Java_OOP_Alexander_Beresteyka_11_01_2020
Отправлено: Alexander Ts от Января 25, 2020, 03:37:05 pm
https://github.com/TsymbaliukOleksandr1981/JavaOOPTask
Название: Re: Java_OOP_Alexander_Beresteyka_11_01_2020
Отправлено: Random от Января 29, 2020, 07:33:27 pm
Задача 1. Создайте сто потоков, которые будут вычислять факториал числа, равного номеру этого потока, и выводить результат на экран.

package com.gmail.iaroslavakorenovska;

import java.math.BigInteger;

public class FactorialOfThreadsNumber implements Runnable {

private int numberOfThread;

public FactorialOfThreadsNumber() {
super();
}

public FactorialOfThreadsNumber(int numberOfThread) {
super();
this.numberOfThread = numberOfThread;
}

public int getNumberOfThread() {
return numberOfThread;
}

public void setNumberOfThread(int numberOfThread) {
this.numberOfThread = numberOfThread;
}

public BigInteger calculateFactorial(int numberOfThread) {
BigInteger fact = new BigInteger("1");
for (int i = 1; i <= numberOfThread; i++) {
fact = fact.multiply(new BigInteger("" + i));
}
return fact;
}

@Override
public void run() {
System.out.println("Thread " + numberOfThread + " : " + calculateFactorial(numberOfThread));

}

@Override
public String toString() {
return "FactorialOfThreadsNumber [numberOfThread=" + numberOfThread + "]";
}

}

package com.gmail.iaroslavakorenovska;

public class Main {

public static void main(String[] args) {
Thread[] threads = new Thread[100];
for (int i = 0; i < 100; i++) {
threads[i] = new Thread(new FactorialOfThreadsNumber(i + 1));
threads[i].start();
}

}

}

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

package com.gmail.iaroslavakorenovska;

import java.util.Arrays;

public class SumOfArraysElements implements Runnable {

private double[] array;
private double sumOfPart;

public SumOfArraysElements() {
super();
}

public SumOfArraysElements(double[] array) {
super();
this.array = array;
}

public double[] getArray() {
return array;
}

public void setArray(double[] array) {
this.array = array;
}

public double getSumOfPart() {
return sumOfPart;
}

public void setSumOfPart(double sumOfPart) {
this.sumOfPart = sumOfPart;
}

public double sumOfPartArray(double[] array) {
double sum = 0;
for (double d : array) {
sum += d;
}
return sum;
}

@Override
public void run() {
sumOfPart=sumOfPartArray(array);
}

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

package com.gmail.iaroslavakorenovska;

import java.util.Arrays;

public class Main {

public static void main(String[] args) {

// Create new Array
double[] a = new double[100000];
for (int i = 0; i < a.length; i++) {
a[i] = (int) (Math.random() * 1000) / 10;
}
System.out.println("Array: " + Arrays.toString(a));

// Create 2 Threads
long  start=System.currentTimeMillis();
double[] part1 = Arrays.copyOfRange(a, 0, a.length / 2);
double[] part2 = Arrays.copyOfRange(a, a.length / 2, a.length);

// Sum by 2 threads
SumOfArraysElements[] parts = { new SumOfArraysElements(part1), new SumOfArraysElements(part2) };
Thread thr1 = new Thread(parts[0]);
Thread thr2 = new Thread(parts[1]);
thr1.start();
thr2.start();

try {
thr1.join();
thr2.join();
} catch (InterruptedException e) {

}

System.out.println("Sum by threads = " + (parts[0].getSumOfPart() + parts[1].getSumOfPart()));
long finish=System.currentTimeMillis();
System.out.println((finish-start)+" ms");

// Sum by one thread
double sum = 0;
start=System.currentTimeMillis();
for (double d : a) {
sum += d;
}
System.out.println("Easy sum = " + sum);
finish=System.currentTimeMillis();
System.out.println((finish-start)+" ms");
}

}
Название: Re: Java_OOP_Alexander_Beresteyka_11_01_2020
Отправлено: Alexander Ts от Января 30, 2020, 11:49:28 am
Random
Решение верное
Название: Re: Java_OOP_Alexander_Beresteyka_11_01_2020
Отправлено: Random от Января 31, 2020, 08:25:57 pm
Задача: Напишите многопоточный вариант сортировки массива методом Шелла
package com.gmail.iaroslavakorenovska;

public class ShellSortThreads implements Runnable{
private double[] arr;

public ShellSortThreads(double[] arr) {
super();
this.arr = arr;
}

private void insertionSort(double[] arr, int start, int inc) {
double tmp;
for (int i = start; i < arr.length - 1; i += inc) {
for (int j = Math.min(i + inc, arr.length - 1); j - inc >= 0; j = j - inc) {
if (arr[j - inc] > arr[j]) {
tmp = arr[j];
arr[j] = arr[j - inc];
arr[j - inc] = tmp;
} else
break;
}
}
}

@Override
public void run() {
for (int inc = arr.length / 2; inc >= 1; inc = inc / 2) {
for (int step = 0; step < inc; step++) {
insertionSort(arr, step, inc);
}
}
}
}



package com.gmail.iaroslavakorenovska;

import java.util.Arrays;

public class Main {

public static void main(String[] args) {
// Create new Array
double[] a = new double[10];
for (int i = 0; i < a.length; i++) {
a[i] = (int) (Math.random() * 1000) / 10;
}
System.out.println("Array: " + Arrays.toString(a));

// Create Array's Copy
double[] b = Arrays.copyOfRange(a, 0, a.length);

// Shell Sort By One Thread
long start = System.currentTimeMillis();
Thread thr = new Thread(new ShellSortThreads(a));
thr.start();
try {
thr.join();
} catch (InterruptedException e) {
System.out.println(e);
}
long stop = System.currentTimeMillis();
System.out.println("Time : " + (stop - start));
System.out.println("Sorted Array By One Thread: " + Arrays.toString(a));

// Shell Sort By Threads
// Sort 2 parts of Array by 2 Threads
start = System.currentTimeMillis();
double[] part1 = Arrays.copyOfRange(b, 0, b.length / 2);
double[] part2 = Arrays.copyOfRange(b, b.length / 2, b.length);
Thread thr1 = new Thread(new ShellSortThreads(part1));
Thread thr2 = new Thread(new ShellSortThreads(part2));
thr1.start();
thr2.start();
try {
thr1.join();
thr2.join();
} catch (InterruptedException e) {
System.out.println(e);
}
// Create Array With sorted first and second parts
if (b.length % 2 == 0) {
for (int i = 0; i < b.length / 2; i++) {
b[i] = part1[i];
b[b.length - 1 - i] = part2[part2.length - 1 - i];
}
} else {
b[b.length / 2] = part2[0];
for (int i = 0; i < b.length / 2; i++) {
b[i] = part1[i];
b[b.length - 1 - i] = part2[part2.length - 1 - i];
}
}
// Sort new array with sorted parts
Thread t = new Thread(new ShellSortThreads(b));
t.start();
try {
t.join();
} catch (InterruptedException e) {
System.out.println(e.toString());
}
stop = System.currentTimeMillis();
System.out.println("Time : " + (stop - start));
System.out.println("Sorted Array By Threads: " + Arrays.toString(b));

}

}
Название: Re: Java_OOP_Alexander_Beresteyka_11_01_2020
Отправлено: Alexander Ts от Февраля 01, 2020, 10:45:07 pm
Random

Решение верное
Название: Re: Java_OOP_Alexander_Beresteyka_11_01_2020
Отправлено: Random от Февраля 04, 2020, 12:46:22 am
Задача.
Создайте класс-контейнер типа стек (класс в который можно добавлять и удалять объекты других классов, только в вершину стека), в который можно сохранять объекты произвольного типа. Должен быть метод добавления элемента в стек, получение с удалением элемента из стека, и просто получение элемента из вершины из стека.  Должна быть реализована работа с «черным списком» классов (смотри ниже). Если объект который добавляется в стек принадлежит классу из «черного списка», то добавление такого объекта запрещено.
Для описанного выше стека создайте класс «Черный список», в котором будут описаны   классы объектов которые нельзя добавлять в стек. Должна быть возможность добавления классов в черный список, проверка объекта на то, что класс, к которому он принадлежит, принадлежит или не принадлежит к классам в черном списке.

package com.gmail.iaroslavakorenovska;

import java.util.Arrays;

public class Stack {

private int stackPoint = 0;
private Object[] stack;
private BlackList blackList;

public Stack() {
super();
}

public Stack(Object[] stack) {
super();
this.stack = stack;
}

public int getStackPoint() {
return stackPoint;
}

public void setStackPoint(int stackPoint) {
this.stackPoint = stackPoint;
}

public Object[] getStack() {
return stack;
}

public void setStack(Object[] stack) {
this.stack = stack;
}

public BlackList getBlackList() {
return blackList;
}

public void setBlackList(BlackList blackList) {
this.blackList = blackList;
}

public void push(Object o) {
boolean ex = false;
try {
ex = blackList.classExistInBlackList(o);
} catch (NullPointerException e) {
}
if (!ex) {
stackPoint++;
Object[] newStack = new Object[stackPoint];
try {
newStack = Arrays.copyOf(stack, stackPoint);
} catch (NullPointerException e) {
}
newStack[stackPoint - 1] = o;
stack = newStack;
} else {
System.out.println("Class of your object is in black list");
}

}

public Object pop() {
try {
Object o = stack[stackPoint - 1];
stackPoint--;
Object[] newStack = new Object[stack.length - 1];
newStack = Arrays.copyOf(stack, stackPoint);
stack = newStack;
return o;
} catch (ArrayIndexOutOfBoundsException e) {
System.out.println("Stack is empty");
return null;
}

}

public Object peek() {
return stack[stackPoint - 1];
}

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

}

package com.gmail.iaroslavakorenovska;

import java.util.Arrays;

public class BlackList {

private Class[] blackList;

public BlackList() {
super();
}

public Class[] getBlackList() {
return blackList;
}

public boolean classExistInBlackList(Class cl) {
try {
for (Class class1 : blackList) {
if (cl == class1) {
return true;
}
}
} catch (NullPointerException e) {
// TODO: handle exception
}
return false;
}

public void addClassInBlackList(Class cl) {
if (!this.classExistInBlackList(cl)) {
try {
int n = blackList.length;
Class[] newBlackList = new Class[n + 1];
newBlackList[n] = cl;
for (int i = 0; i < n; i++) {
newBlackList[i] = blackList[i];
}
blackList = newBlackList;
} catch (NullPointerException e) {
Class[] blList = { cl };
blackList = blList;
}
System.out.println("Class is added");
}
}

public boolean classExistInBlackList(Object o) {
boolean ex = false;
for (Class class1 : blackList) {
if (o.getClass().equals(class1)) {
ex = true;
}
}
return ex;
}

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

package com.gmail.iaroslavakorenovska;

public class Cat {

private String name;
private int age;

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

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

}

package com.gmail.iaroslavakorenovska;

public class Dog {
private String name;
private int age;

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

}

package com.gmail.iaroslavakorenovska;

import java.lang.Class;

public class Main {

public static void main(String[] args) {
// Создание стека
Stack st = new Stack();
System.out.println("Stack Pointer: " + st.getStackPoint());
System.out.println("-------");

// Заполнение стека и вывод на экран инф-ции о нем
st.push(12);
st.push(0.25);
st.push('a');
st.push("dfg");
st.push(new Cat("Vaska", 7));
System.out.println(st.toString());
System.out.println("Stack Pointer: " + st.getStackPoint());
System.out.println("-------");

// Проверка методов
System.out.println(st.peek());
System.out.println(st.toString());
System.out.println("-------");

int n = st.getStackPoint();
for (int i = 0; i <= n; i++) {
System.out.println(st.pop());
System.out.println(st.toString());
System.out.println("Stack Pointer: " + st.getStackPoint());
System.out.println("................");
}

// С черным списком
BlackList blList = new BlackList();
blList.addClassInBlackList(Cat.class);
blList.addClassInBlackList(Stack.class);
blList.addClassInBlackList(Dog.class);
st.setBlackList(blList);

st.push("dfg");
st.push(new Cat("Vaska", 7));
st.push(new Dog("Wolf", 7));
Object[] obj= {1,2,3};
st.push(new Stack(obj));
System.out.println(st.toString());

}

}
Название: Re: Java_OOP_Alexander_Beresteyka_11_01_2020
Отправлено: Alexander Ts от Февраля 05, 2020, 12:54:34 am

Random

Решение верное
Название: Re: Java_OOP_Alexander_Beresteyka_11_01_2020
Отправлено: Random от Февраля 07, 2020, 06:33:50 pm
Задача: Существуют три корабля. На каждом из них 10 ящиков груза. Они одновременно прибыли в порт, в котором только два дока. Скорость разгрузки - 1 ящик в 0.5 сек. Напишите программу, которая, управляя кораблями, позволит им правильно разгрузить груз.

package com.gmail.iaroslavakorenovska;

public class Main {

public static void main(String[] args) {
Port port = new Port(new Ship[] { new Ship(10, "One"), new Ship(10, "Two"), new Ship(10, "Three") });

Dock dock1 = new Dock(port);
Dock dock2 = new Dock(port);

Thread dock1Work = new Thread(dock1, "Dock1 ");
Thread dock2Work = new Thread(dock2, "Dock2 ");

dock2Work.start();
dock1Work.start();

}

}

package com.gmail.iaroslavakorenovska;

public class Port {
private Ship[] ships;

public Port() {
super();
}

public Port(Ship[] ships) {
super();
this.ships = ships;
}

public Ship[] getShips() {
return ships;
}

public void setShips(Ship[] ships) {
this.ships = ships;
}

}
package com.gmail.iaroslavakorenovska;

public class Ship {

private int cargo;
private String name;
private boolean busy = false;

public Ship(int cargo, String name) {
super();
this.cargo = cargo;
this.name = name;
}

public String getName() {
return name;
}

public boolean isBusy() {
return busy;
}

public synchronized void getCargoFromShip() {
if (busy == false) {
busy = true;
while (cargo > 0) {
cargo--;
System.out.println(Thread.currentThread().getName() + "Ship " + name + " box " + cargo);
try {
Thread.currentThread().sleep(500);
} catch (InterruptedException e) {
System.out.println(e);
}
}

}
}

}

package com.gmail.iaroslavakorenovska;

import java.util.Arrays;

public class Dock implements Runnable {

private Port port;

public Dock(Port port) {
super();
this.port = port;
}

@Override
public void run() {
for (int i = 0; i < port.getShips().length; i++) {
try {
if (port.getShips()[i].isBusy() == false) {
port.getShips()[i].getCargoFromShip();
Ship[] notEmptyShips = Arrays.copyOfRange(port.getShips(), 0, port.getShips().length);
port.setShips(notEmptyShips);
} else {
continue;
}
} catch (NullPointerException e) {
System.out.println(e);
}
}
}

}
Название: Re: Java_OOP_Alexander_Beresteyka_11_01_2020
Отправлено: Alexander Ts от Февраля 09, 2020, 08:58:05 pm
Random

Решение верное
Название: Re: Java_OOP_Alexander_Beresteyka_11_01_2020
Отправлено: Random от Февраля 10, 2020, 09:48:13 am
 Написать метод, который создаст список, положит в него 10 элементов, затем удалит первые два и последний, а затем выведет результат на экран.

package com.gmail.iaroslavakorenovska;

import java.util.*;

public class Main {

public static void main(String[] args) {
ArrayList list = new ArrayList();

for (int i = 0; i < 10; i++) {
int a = (int) (100 * Math.random());
list.add(a);
}

System.out.println("Your list: " + list);
System.out.println("Element " + list.remove(0) + " is deleted");
System.out.println("New list: " + list);
System.out.println("Element " + list.remove(0) + " is deleted");
System.out.println("New list: " + list);
System.out.println("Element " + list.remove(list.size() - 1) + " is deleted");
System.out.println("New list: " + list);

}

}

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

package com.gmail.iaroslavakorenovska;

import java.util.*;

public class Cola {
private ArrayList<String> list;

public Cola(ArrayList<String> list) {
super();
this.list = list;
}

public void drinkCola(int amountOfGlasses) {
for (int i = 0; i < amountOfGlasses; i++) {
String str = list.remove(0);
list.add(str);
list.add(str);
}
}

}

package com.gmail.iaroslavakorenovska;

import java.util.ArrayList;
import java.util.InputMismatchException;
import java.util.Scanner;

public class Main {

public static void main(String[] args) {
ArrayList<String> list = new ArrayList<String>();
list.add("Sheldon");
list.add("Leonard");
list.add("Volovitc");
list.add("Kutrapalli");
list.add("Penni");
System.out.println(list);

Cola cola = new Cola(list);

System.out.println("Input amount of glasses ");
Scanner sc = new Scanner(System.in);
try {
cola.drinkCola(sc.nextInt());
}
catch (InputMismatchException e) {
System.out.println(e);
}
sc.close();
System.out.println(list);

}

}
Название: Re: Java_OOP_Alexander_Beresteyka_11_01_2020
Отправлено: Alexander Ts от Февраля 11, 2020, 11:31:00 pm
Random

Решение верное
Название: Re: Java_OOP_Alexander_Beresteyka_11_01_2020
Отправлено: Ts.Tatyana от Февраля 12, 2020, 01:30:23 pm
Написать метод, который создаст список, положит в него 10 элементов, затем удалит первые два и последний, а затем выведет результат на экран.
package com.gmail.ts;

import java.util.ArrayList;

public class Main {

public static void main(String[] args) {
// TODO Auto-generated method stub
ArrayList<Integer> mylist = new ArrayList<>();
int n = 1;
for (int i = 0; i < 10; i++) {
mylist.add(n);
n++;
}
System.out.println(mylist);
mylist.remove(0);
mylist.remove(0);
mylist.remove(7);
System.out.println(mylist);

}

}

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

import java.util.ArrayList;

public class Main {

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

ArrayList<String> queue = new ArrayList<>();

queue.add("Sheldon");
queue.add("Leonard");
queue.add("Volovitc");
queue.add("Kutrapalli");
queue.add("Penny");

int n = 2;
for (int i = 0; i < n; i++) {
queue.add(queue.get(0));
queue.add(queue.get(0));
queue.remove(0);
}

System.out.println(queue);
}

}

Название: Re: Java_OOP_Alexander_Beresteyka_11_01_2020
Отправлено: Alexander Ts от Февраля 12, 2020, 02:19:13 pm
Ts.Tatyana

Решение верное
Название: Re: Java_OOP_Alexander_Beresteyka_11_01_2020
Отправлено: Alexander Ts от Февраля 15, 2020, 08:48:06 pm
Итак что полезно почитать после окончания курса Java OOP для начинающего

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



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

Также можете посмотреть о прикольном шаблонизаторе - Thymeleaf - https://www.thymeleaf.org/

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

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

 Основы 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

 Установить и настроить контейнер сервлетов - 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/
Заранее спасибо за отзывы.

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

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