diff --git a/.gitignore b/.gitignore index eea6353..f30456d 100644 --- a/.gitignore +++ b/.gitignore @@ -2,4 +2,5 @@ .idea *.iws *.iml -*.ipr \ No newline at end of file +*.ipr +/out/ \ No newline at end of file diff --git a/src/ru/milandr/courses/complexnumber/ComplexNumberInterface.java b/src/ru/milandr/courses/complexnumber/ComplexNumberInterface.java index 541391b..7d49da1 100644 --- a/src/ru/milandr/courses/complexnumber/ComplexNumberInterface.java +++ b/src/ru/milandr/courses/complexnumber/ComplexNumberInterface.java @@ -40,4 +40,16 @@ public interface ComplexNumberInterface { * @return argument value for current complex number */ double calculateArgument(); + + /** + * + * @return value of real part of complex nubmer + */ + double getReal(); + + /** + * + * @return value of imaginary part of complex number + */ + double getImaginary(); } \ No newline at end of file diff --git a/src/ru/milandr/courses/complexnumber/tkhorzhevskiy/ComplexNumber.java b/src/ru/milandr/courses/complexnumber/tkhorzhevskiy/ComplexNumber.java new file mode 100644 index 0000000..c01985b --- /dev/null +++ b/src/ru/milandr/courses/complexnumber/tkhorzhevskiy/ComplexNumber.java @@ -0,0 +1,119 @@ +package ru.milandr.courses.complexnumber.tkhorzhevskiy; + +import ru.milandr.courses.complexnumber.ComplexNumberInterface; + +public class ComplexNumber implements ComplexNumberInterface { + + + protected double real; + protected double imaginary; + + + + public ComplexNumber (double x, double y) { + this.real = x; + this.imaginary = y; + } + @Override + public double getReal() { + return this.real; + } + public void setReal(double real) { + this.real = real; + } + @Override + public double getImaginary() { + return this.imaginary; + } + public void setImaginary(double imaginary) { + this.imaginary = imaginary; + } + + public void validateNumber(ComplexNumberInterface anotherNumber){ + if (!(anotherNumber instanceof ComplexNumber)){ + throw new WrongNumberException("Неверный формат числа"); + } + } + + @Override + public ComplexNumberInterface add(ComplexNumberInterface anotherNumber) { + validateNumber(anotherNumber); + double a = real; + double b = imaginary; + double c = anotherNumber.getReal(); + double d = anotherNumber.getImaginary(); + return new ComplexNumber((a + c), (b + d)); + } + + @Override + public ComplexNumberInterface subtract(ComplexNumberInterface anotherNumber) { + validateNumber(anotherNumber); + double a = real; + double b = imaginary; + double c = anotherNumber.getReal(); + double d = anotherNumber.getImaginary(); + return new ComplexNumber((a - c), (b - d)); + } + + @Override + public ComplexNumberInterface multiply(ComplexNumberInterface anotherNumber) { + validateNumber(anotherNumber); + double a = real; + double b = imaginary; + double c = anotherNumber.getReal(); + double d = anotherNumber.getImaginary(); + + return new ComplexNumber(a * c - b * d, b * c + a * d); + } + + @Override + public ComplexNumberInterface divide(ComplexNumberInterface anotherNumber) { + validateNumber(anotherNumber); + double a = real; + double b = imaginary; + double c = anotherNumber.getReal(); + double d = anotherNumber.getImaginary(); + return new ComplexNumber((a * c + b * d) / (c * c + d * d), (b * c - a * d) / (c * c + d * d)); + } + + @Override + public ComplexNumberInterface negate() { + double a = real * -1; + double b = imaginary * -1; + return new ComplexNumber(a,b); + } + + @Override + public double calculateModulus() { + double a = real; + double b = imaginary; + return Math.sqrt((a*a + b*b)); + } + + @Override + public double calculateArgument() { + return 0; + //я тупой и не понял этого. + } + + @Override + public String toString() { + return real + "+" + imaginary + "i"; + } + public static void main(String[] args) { + + ComplexNumber number = new ComplexNumber(2 , 3); + System.out.println(number + " 1 число"); + ComplexNumber number2 = new ComplexNumber(1 , 2); + System.out.println(number2 + " 2 число"); + System.out.println(number.add(number2) + " их сумма"); + System.out.println(number.subtract(number2) + " их разность"); + System.out.println(number.divide(number2)+ " результат деления"); + System.out.println(number.multiply(number2)+ " результат перемножения"); + System.out.println(number.negate() + " негатив 1 числа"); + System.out.println(number.calculateModulus() + " модуль 1 числа"); + number.add(new WrongNumber()); + + } + +} diff --git a/src/ru/milandr/courses/complexnumber/tkhorzhevskiy/WrongNumber.java b/src/ru/milandr/courses/complexnumber/tkhorzhevskiy/WrongNumber.java new file mode 100644 index 0000000..cd8e945 --- /dev/null +++ b/src/ru/milandr/courses/complexnumber/tkhorzhevskiy/WrongNumber.java @@ -0,0 +1,53 @@ +package ru.milandr.courses.complexnumber.tkhorzhevskiy; + +import ru.milandr.courses.complexnumber.ComplexNumberInterface; + +public class WrongNumber implements ComplexNumberInterface { + + + + @Override + public ComplexNumberInterface add(ComplexNumberInterface anotherNumber) { + return null; + } + + @Override + public ComplexNumberInterface subtract(ComplexNumberInterface anotherNumber) { + return null; + } + + @Override + public ComplexNumberInterface multiply(ComplexNumberInterface anotherNumber) { + return null; + } + + @Override + public ComplexNumberInterface divide(ComplexNumberInterface anotherNumber) { + return null; + } + + @Override + public ComplexNumberInterface negate() { + return null; + } + + @Override + public double calculateModulus() { + return 0; + } + + @Override + public double calculateArgument() { + return 0; + } + + @Override + public double getReal() { + return 0; + } + + @Override + public double getImaginary() { + return 0; + } +} diff --git a/src/ru/milandr/courses/complexnumber/tkhorzhevskiy/WrongNumberException.java b/src/ru/milandr/courses/complexnumber/tkhorzhevskiy/WrongNumberException.java new file mode 100644 index 0000000..6824f5d --- /dev/null +++ b/src/ru/milandr/courses/complexnumber/tkhorzhevskiy/WrongNumberException.java @@ -0,0 +1,9 @@ +package ru.milandr.courses.complexnumber.tkhorzhevskiy; + +public class WrongNumberException extends RuntimeException{ + + public WrongNumberException(String message){ + super(message); + } + +} diff --git a/src/ru/milandr/courses/farm/tkhorzhevskiy/Application.java b/src/ru/milandr/courses/farm/tkhorzhevskiy/Application.java new file mode 100644 index 0000000..789af65 --- /dev/null +++ b/src/ru/milandr/courses/farm/tkhorzhevskiy/Application.java @@ -0,0 +1,37 @@ +package ru.milandr.courses.farm.tkhorzhevskiy; + +import ru.milandr.courses.farm.Animal; +import ru.milandr.courses.farm.Good; +import ru.milandr.courses.farm.tkhorzhevskiy.animals.Chicken; +import ru.milandr.courses.farm.tkhorzhevskiy.animals.Cow; +import ru.milandr.courses.farm.tkhorzhevskiy.animals.Pig; +import ru.milandr.courses.farm.tkhorzhevskiy.goods.Egg; +import ru.milandr.courses.farm.tkhorzhevskiy.goods.Meat; +import ru.milandr.courses.farm.tkhorzhevskiy.goods.Milk; + +public class Application { + public static void main(String[] args) { + Farmer volodya = new Farmer("Володя"); + Animal cow = new Cow(); + Animal pig = new Pig(); + Animal chicken = new Chicken(); + Good milk = new Milk(); + Good meat = new Meat(); + Good egg = new Egg(); + + + volodya.petAnAnimal(cow); + volodya.petAnAnimal(pig); + volodya.petAnAnimal(chicken); + volodya.collectGoods(meat); + volodya.collectGoods(egg); + volodya.collectGoods(milk); + volodya.eatProduct(milk); + volodya.eatProduct(egg); + volodya.eatProduct(meat); + milk.goRotten(); + volodya.eatProduct(milk); + + + } +} diff --git a/src/ru/milandr/courses/farm/tkhorzhevskiy/Farmer.java b/src/ru/milandr/courses/farm/tkhorzhevskiy/Farmer.java new file mode 100644 index 0000000..0c714aa --- /dev/null +++ b/src/ru/milandr/courses/farm/tkhorzhevskiy/Farmer.java @@ -0,0 +1,54 @@ +package ru.milandr.courses.farm.tkhorzhevskiy; + + +import ru.milandr.courses.farm.Animal; +import ru.milandr.courses.farm.GenericFarmer; +import ru.milandr.courses.farm.Good; +import ru.milandr.courses.farm.tkhorzhevskiy.goods.Egg; +import ru.milandr.courses.farm.tkhorzhevskiy.goods.Meat; +import ru.milandr.courses.farm.tkhorzhevskiy.goods.Milk; +import ru.milandr.courses.farm.tkhorzhevskiy.goods.ParentGood; + +public class Farmer implements GenericFarmer { + private final String name; + + + public Farmer(String name) { + this.name = name; + } + + @Override + public void collectGoods(Good good) { + if (good instanceof Milk) { + System.out.println(name + " подоил корову"); + return; + } + if (good instanceof Egg) { + System.out.println(name + " собрал яйцо"); + return; + } + if (good instanceof Meat) { + System.out.println(name + " зарезал свинью"); + } + } + + @Override + public void petAnAnimal(Animal animal) { + System.out.println(name + " погладил " + animal); + animal.produceSound(); + + } + + @Override + public void eatProduct(Good good) { + ParentGood currGood = (ParentGood) good; + if (currGood.isRotten()) { + System.out.println("Фу, протухло " + good); + return; + } + System.out.println(name + " употребил " + currGood.getName()); + + } + +} + diff --git a/src/ru/milandr/courses/farm/tkhorzhevskiy/animals/Chicken.java b/src/ru/milandr/courses/farm/tkhorzhevskiy/animals/Chicken.java new file mode 100644 index 0000000..63d851e --- /dev/null +++ b/src/ru/milandr/courses/farm/tkhorzhevskiy/animals/Chicken.java @@ -0,0 +1,23 @@ +package ru.milandr.courses.farm.tkhorzhevskiy.animals; + +import ru.milandr.courses.farm.Good; +import ru.milandr.courses.farm.tkhorzhevskiy.goods.Egg; + +public class Chicken extends ParentAnimal { + private static final String CHICKEN_NAME = "Курица"; + + public Chicken() { + name = CHICKEN_NAME; + } + + @Override + public void produceSound() { + System.out.println("За орду!"); + } + + @Override + public Good produceGoods() { + return new Egg(); + } + +} diff --git a/src/ru/milandr/courses/farm/tkhorzhevskiy/animals/Cow.java b/src/ru/milandr/courses/farm/tkhorzhevskiy/animals/Cow.java new file mode 100644 index 0000000..4fbfee6 --- /dev/null +++ b/src/ru/milandr/courses/farm/tkhorzhevskiy/animals/Cow.java @@ -0,0 +1,23 @@ +package ru.milandr.courses.farm.tkhorzhevskiy.animals; + +import ru.milandr.courses.farm.Good; +import ru.milandr.courses.farm.tkhorzhevskiy.goods.Milk; + +public class Cow extends ParentAnimal { + private static final String COW_NAME = "Корова"; + + public Cow() { + name = COW_NAME; + } + + @Override + public void produceSound() { + System.out.println("Lets get mooooving"); + } + + @Override + public Good produceGoods() { + return new Milk(); + } + +} diff --git a/src/ru/milandr/courses/farm/tkhorzhevskiy/animals/ParentAnimal.java b/src/ru/milandr/courses/farm/tkhorzhevskiy/animals/ParentAnimal.java new file mode 100644 index 0000000..fc81dce --- /dev/null +++ b/src/ru/milandr/courses/farm/tkhorzhevskiy/animals/ParentAnimal.java @@ -0,0 +1,48 @@ +package ru.milandr.courses.farm.tkhorzhevskiy.animals; + +import ru.milandr.courses.farm.Animal; +import ru.milandr.courses.farm.Good; + + +public abstract class ParentAnimal implements Animal { + protected String name; + protected boolean isAlive; + + public ParentAnimal() { + this.isAlive = true; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public boolean isAlive() { + return isAlive; + } + + public void setAlive(boolean alive) { + isAlive = alive; + } + + + @Override + public void produceSound() { + System.out.println("Какой то звук"); + + } + + @Override + public Good produceGoods() { + return null; + } + + public String toString() { + return this.getName(); + } + + +} diff --git a/src/ru/milandr/courses/farm/tkhorzhevskiy/animals/Pig.java b/src/ru/milandr/courses/farm/tkhorzhevskiy/animals/Pig.java new file mode 100644 index 0000000..c260357 --- /dev/null +++ b/src/ru/milandr/courses/farm/tkhorzhevskiy/animals/Pig.java @@ -0,0 +1,39 @@ +package ru.milandr.courses.farm.tkhorzhevskiy.animals; + +import ru.milandr.courses.farm.Good; +import ru.milandr.courses.farm.tkhorzhevskiy.goods.Meat; + +public class Pig extends ParentAnimal { + private static final String PIG_NAME = "Свинья"; + private boolean isAlive = true; + + public Pig() { + name = PIG_NAME; + } + + @Override + public void produceSound() { + if (!isAlive) { + System.out.println("Свинья отсутствует"); + return; + } + System.out.println("За альянс!"); + } + + @Override + public Good produceGoods() { + if (!isAlive) { + System.out.println("Свинья отсутствует"); + } else { + return new Meat(); + } + return null; + } + + @Override + public String toString() { + return "Свинья"; + } + + +} diff --git a/src/ru/milandr/courses/farm/tkhorzhevskiy/goods/Egg.java b/src/ru/milandr/courses/farm/tkhorzhevskiy/goods/Egg.java new file mode 100644 index 0000000..83deba8 --- /dev/null +++ b/src/ru/milandr/courses/farm/tkhorzhevskiy/goods/Egg.java @@ -0,0 +1,13 @@ +package ru.milandr.courses.farm.tkhorzhevskiy.goods; + +public class Egg extends ParentGood { + private static final String EGG_NAME = "Яйцо"; + + public Egg() { + name = EGG_NAME; + } + +} + + + diff --git a/src/ru/milandr/courses/farm/tkhorzhevskiy/goods/Meat.java b/src/ru/milandr/courses/farm/tkhorzhevskiy/goods/Meat.java new file mode 100644 index 0000000..3ff6168 --- /dev/null +++ b/src/ru/milandr/courses/farm/tkhorzhevskiy/goods/Meat.java @@ -0,0 +1,11 @@ +package ru.milandr.courses.farm.tkhorzhevskiy.goods; + + +public class Meat extends ParentGood { + private static final String MEAT_NAME = "Мясо"; + + public Meat() { + name = MEAT_NAME; + } + +} diff --git a/src/ru/milandr/courses/farm/tkhorzhevskiy/goods/Milk.java b/src/ru/milandr/courses/farm/tkhorzhevskiy/goods/Milk.java new file mode 100644 index 0000000..3a15960 --- /dev/null +++ b/src/ru/milandr/courses/farm/tkhorzhevskiy/goods/Milk.java @@ -0,0 +1,9 @@ +package ru.milandr.courses.farm.tkhorzhevskiy.goods; + +public class Milk extends ParentGood { + private static final String MILK_NAME = "Молоко"; + + public Milk() { + name = MILK_NAME; + } +} diff --git a/src/ru/milandr/courses/farm/tkhorzhevskiy/goods/ParentGood.java b/src/ru/milandr/courses/farm/tkhorzhevskiy/goods/ParentGood.java new file mode 100644 index 0000000..8f432ee --- /dev/null +++ b/src/ru/milandr/courses/farm/tkhorzhevskiy/goods/ParentGood.java @@ -0,0 +1,40 @@ +package ru.milandr.courses.farm.tkhorzhevskiy.goods; + +import ru.milandr.courses.farm.Good; + +public abstract class ParentGood implements Good { + protected boolean isRotten; + protected String name; + + public ParentGood() { + this.isRotten = false; + } + + public boolean isRotten() { + return isRotten; + } + + public void setRotten(boolean rotten) { + isRotten = rotten; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + @Override + public void goRotten() { + isRotten = true; + + } + + public String toString() { + return this.getName(); + } + + +} diff --git a/src/ru/milandr/courses/presentationlink b/src/ru/milandr/courses/presentationlink new file mode 100644 index 0000000..81d1ff5 --- /dev/null +++ b/src/ru/milandr/courses/presentationlink @@ -0,0 +1 @@ +https://docs.google.com/presentation/d/1Gphwh3u9eoed_lGBRVItsJ35m7JtNjLd22soQE35AJw/edit#slide=id.gfd67b21091_0_29