├── .gitignore ├── README.md └── src └── com └── javarush └── test ├── level07 ├── lesson09 │ └── task04 │ │ └── Solution.java └── lesson12 │ ├── bonus02 │ └── Solution.java │ └── home02 │ └── Solution.java ├── level08 ├── lesson08 │ ├── task03 │ │ └── Solution.java │ ├── task04 │ │ └── Solution.java │ └── task05 │ │ └── Solution.java └── lesson11 │ ├── bonus03 │ └── Solution.java │ ├── home05 │ └── Solution.java │ └── home09 │ └── Solution.java ├── level09 ├── lesson02 │ ├── task03 │ │ └── Solution.java │ └── task05 │ │ └── Solution.java ├── lesson08 │ ├── task03 │ │ └── Solution.java │ └── task05 │ │ └── Solution.java └── lesson11 │ ├── bonus01 │ └── Solution.java │ ├── bonus02 │ └── Solution.java │ ├── bonus03 │ └── Solution.java │ ├── home01 │ └── Solution.java │ ├── home02 │ └── Solution.java │ ├── home03 │ └── Solution.java │ ├── home04 │ └── Solution.java │ ├── home05 │ └── Solution.java │ ├── home06 │ └── Solution.java │ ├── home07 │ └── Solution.java │ ├── home08 │ └── Solution.java │ └── home09 │ └── Solution.java ├── level10 ├── lesson04 │ ├── task03 │ │ └── Solution.java │ └── task04 │ │ └── Solution.java └── lesson11 │ ├── bonus01 │ └── Solution.java │ ├── bonus02 │ └── Solution.java │ ├── bonus03 │ └── Solution.java │ ├── home01 │ └── Solution.java │ ├── home02 │ └── Solution.java │ ├── home03 │ └── Solution.java │ ├── home04 │ └── Solution.java │ ├── home05 │ └── Solution.java │ ├── home06 │ └── Solution.java │ ├── home07 │ └── Solution.java │ ├── home08 │ └── Solution.java │ ├── home09 │ └── Solution.java │ └── home10 │ └── Solution.java ├── level11 └── lesson11 │ ├── bonus01 │ └── Solution.java │ ├── bonus02 │ └── Solution.java │ ├── bonus03 │ └── Solution.java │ ├── home01 │ └── Solution.java │ ├── home02 │ └── Solution.java │ ├── home03 │ └── Solution.java │ ├── home04 │ └── Solution.java │ ├── home05 │ └── Solution.java │ ├── home06 │ └── Solution.java │ ├── home07 │ └── Solution.java │ ├── home08 │ └── Solution.java │ ├── home09 │ └── Solution.java │ └── home10 │ └── Solution.java ├── level12 └── lesson12 │ ├── bonus01 │ └── Solution.java │ ├── bonus02 │ └── Solution.java │ ├── bonus03 │ └── Solution.java │ ├── home01 │ └── Solution.java │ ├── home02 │ └── Solution.java │ ├── home03 │ └── Solution.java │ ├── home04 │ └── Solution.java │ ├── home05 │ └── Solution.java │ ├── home06 │ └── Solution.java │ ├── home07 │ └── Solution.java │ ├── home08 │ └── Solution.java │ ├── home09 │ └── Solution.java │ └── home10 │ └── Solution.java ├── level13 ├── lesson02 │ ├── task01 │ │ └── Solution.java │ ├── task02 │ │ └── Solution.java │ ├── task03 │ │ └── Solution.java │ ├── task04 │ │ └── Solution.java │ ├── task05 │ │ └── Solution.java │ ├── task06 │ │ └── Solution.java │ ├── task07 │ │ └── Solution.java │ ├── task08 │ │ └── Solution.java │ ├── task09 │ │ └── Solution.java │ └── task10 │ │ └── Solution.java ├── lesson04 │ ├── task01 │ │ └── Solution.java │ ├── task02 │ │ └── Solution.java │ ├── task03 │ │ └── Solution.java │ └── task04 │ │ └── Solution.java ├── lesson06 │ └── task01 │ │ └── Solution.java └── lesson11 │ ├── bonus01 │ └── Solution.java │ ├── bonus02 │ ├── Person.java │ ├── RepkaItem.java │ ├── RepkaStory.java │ └── Solution.java │ ├── bonus03 │ ├── AbstractRobot.java │ ├── Attackable.java │ ├── BodyPart.java │ ├── Defensable.java │ ├── Robot.java │ └── Solution.java │ ├── home01 │ └── Solution.java │ ├── home02 │ ├── Solution.java │ ├── Weather.java │ └── WeatherType.java │ ├── home03 │ └── Solution.java │ ├── home04 │ └── Solution.java │ ├── home05 │ └── Solution.java │ ├── home06 │ └── Solution.java │ ├── home07 │ └── Solution.java │ ├── home08 │ └── Solution.java │ ├── home09 │ └── Solution.java │ └── home10 │ └── Solution.java ├── level14 ├── lesson02 │ ├── task01 │ │ └── Solution.java │ └── task02 │ │ └── Solution.java ├── lesson04 │ ├── task01 │ │ └── Solution.java │ ├── task02 │ │ └── Solution.java │ ├── task03 │ │ └── Solution.java │ ├── task04 │ │ └── Solution.java │ └── task05 │ │ └── Solution.java ├── lesson06 │ └── home01 │ │ ├── BelarusianHen.java │ │ ├── Country.java │ │ ├── Hen.java │ │ ├── MoldovanHen.java │ │ ├── RussianHen.java │ │ ├── Solution.java │ │ └── UkrainianHen.java └── lesson08 │ ├── bonus01 │ └── Solution.java │ ├── bonus02 │ └── Solution.java │ ├── bonus03 │ ├── Singleton.java │ └── Solution.java │ ├── home01 │ ├── Bridge.java │ ├── Solution.java │ ├── SuspensionBridge.java │ └── WaterBridge.java │ ├── home02 │ ├── BubblyWine.java │ ├── Drink.java │ ├── Solution.java │ └── Wine.java │ ├── home03 │ ├── Person.java │ └── Solution.java │ ├── home04 │ └── Solution.java │ ├── home05 │ ├── CompItem.java │ ├── Computer.java │ ├── Keyboard.java │ ├── Monitor.java │ ├── Mouse.java │ └── Solution.java │ ├── home06 │ └── Solution.java │ ├── home07 │ └── Solution.java │ ├── home08 │ └── Solution.java │ ├── home09 │ ├── Hrivna.java │ ├── Money.java │ ├── Solution.java │ └── USD.java │ └── home10 │ └── Solution.java ├── level15 ├── lesson02 │ ├── task01 │ │ └── Solution.java │ ├── task02 │ │ └── Solution.java │ ├── task03 │ │ └── Solution.java │ ├── task04 │ │ └── Solution.java │ └── task05 │ │ └── Solution.java ├── lesson04 │ ├── task01 │ │ └── Solution.java │ ├── task02 │ │ └── Solution.java │ ├── task03 │ │ └── Solution.java │ ├── task04 │ │ └── Solution.java │ └── task05 │ │ └── Solution.java ├── lesson06 │ ├── task01 │ │ └── Solution.java │ ├── task02 │ │ └── Solution.java │ └── task03 │ │ └── Solution.java ├── lesson09 │ ├── task01 │ │ └── Solution.java │ ├── task02 │ │ └── Solution.java │ ├── task03 │ │ └── Solution.java │ ├── task04 │ │ └── Solution.java │ └── task05 │ │ └── Solution.java └── lesson12 │ ├── bonus01 │ ├── Flyable.java │ ├── Helicopter.java │ ├── Plane.java │ └── Solution.java │ ├── bonus02 │ ├── DrinkMaker.java │ ├── LatteMaker.java │ ├── Solution.java │ └── TeaMaker.java │ ├── bonus03 │ └── Solution.java │ ├── home01 │ └── Solution.java │ ├── home02 │ └── Solution.java │ ├── home03 │ ├── Solution.java │ └── Tree.java │ ├── home04 │ ├── Earth.java │ ├── Moon.java │ ├── Planet.java │ ├── Solution.java │ └── Sun.java │ ├── home05 │ ├── Solution.java │ └── SubSolution.java │ ├── home06 │ └── Solution.java │ ├── home07 │ ├── Constants.java │ └── Solution.java │ ├── home08 │ └── Solution.java │ ├── home09 │ └── Solution.java │ └── home10 │ └── Solution.java ├── level16 ├── lesson03 │ ├── task01 │ │ └── Solution.java │ ├── task02 │ │ └── Solution.java │ ├── task03 │ │ └── Solution.java │ ├── task04 │ │ └── Solution.java │ └── task05 │ │ └── Solution.java ├── lesson05 │ ├── task01 │ │ └── Solution.java │ ├── task02 │ │ └── Solution.java │ ├── task03 │ │ └── Solution.java │ ├── task04 │ │ └── Solution.java │ └── task05 │ │ └── Solution.java ├── lesson07 │ ├── task01 │ │ └── Solution.java │ ├── task02 │ │ └── Solution.java │ ├── task03 │ │ └── Solution.java │ ├── task04 │ │ └── Solution.java │ └── task05 │ │ └── Solution.java ├── lesson10 │ ├── task01 │ │ └── Solution.java │ ├── task02 │ │ └── Solution.java │ ├── task03 │ │ └── Solution.java │ ├── task04 │ │ └── Solution.java │ └── task05 │ │ └── Solution.java └── lesson13 │ ├── bonus01 │ ├── ImageReaderFactory.java │ ├── Solution.java │ └── common │ │ ├── BmpReader.java │ │ ├── ImageReader.java │ │ ├── ImageTypes.java │ │ ├── JpgReader.java │ │ └── PngReader.java │ ├── bonus02 │ ├── Message.java │ └── Solution.java │ ├── bonus03 │ └── Solution.java │ ├── home01 │ └── Solution.java │ ├── home02 │ └── Solution.java │ ├── home03 │ └── Solution.java │ ├── home04 │ └── Solution.java │ ├── home05 │ └── Solution.java │ ├── home06 │ └── Solution.java │ ├── home07 │ └── Solution.java │ ├── home08 │ └── Solution.java │ ├── home09 │ └── Solution.java │ └── home10 │ └── Solution.java ├── level17 ├── lesson02 │ ├── task01 │ │ └── Solution.java │ └── task02 │ │ └── Solution.java ├── lesson04 │ ├── task01 │ │ └── Solution.java │ ├── task02 │ │ └── Solution.java │ ├── task03 │ │ └── Solution.java │ ├── task04 │ │ └── Solution.java │ └── task05 │ │ └── Solution.java ├── lesson06 │ ├── task01 │ │ └── Solution.java │ └── task02 │ │ └── Solution.java └── lesson10 │ ├── bonus01 │ ├── Person.java │ ├── Sex.java │ └── Solution.java │ ├── bonus02 │ ├── Person.java │ ├── Sex.java │ └── Solution.java │ ├── bonus03 │ ├── Cook.java │ ├── Dishes.java │ ├── Manager.java │ ├── Order.java │ ├── Restaurant.java │ ├── Table.java │ └── Waiter.java │ ├── home01 │ └── Solution.java │ ├── home02 │ └── Beach.java │ ├── home03 │ ├── Drug.java │ ├── DrugsController.java │ └── Solution.java │ ├── home04 │ └── Solution.java │ ├── home05 │ └── Solution.java │ ├── home06 │ └── Solution.java │ ├── home07 │ ├── ApplicationContext.java │ └── Bean.java │ ├── home08 │ ├── BankAccount.java │ ├── Bankomat.java │ └── NotEnoughMoneyException.java │ ├── home09 │ ├── CorruptedDataException.java │ └── Solution.java │ └── home10 │ └── Solution.java ├── level18 ├── lesson03 │ ├── task01 │ │ └── Solution.java │ ├── task02 │ │ └── Solution.java │ ├── task03 │ │ └── Solution.java │ ├── task04 │ │ └── Solution.java │ └── task05 │ │ └── Solution.java ├── lesson05 │ ├── task01 │ │ └── Solution.java │ ├── task02 │ │ └── Solution.java │ ├── task03 │ │ └── Solution.java │ ├── task04 │ │ └── Solution.java │ └── task05 │ │ └── Solution.java ├── lesson08 │ ├── task01 │ │ └── Solution.java │ ├── task02 │ │ ├── AmigoOutputStream.java │ │ └── QuestionFileOutputStream.java │ ├── task03 │ │ └── AmigoOutputStream.java │ ├── task04 │ │ ├── TxtInputStream.java │ │ └── UnsupportedFileNameException.java │ └── task05 │ │ └── Solution.java └── lesson10 │ ├── bonus01 │ └── Solution.java │ ├── bonus02 │ ├── Solution.java │ └── file.txt │ ├── bonus03 │ ├── Solution.java │ └── file.txt │ ├── home01 │ └── Solution.java │ ├── home02 │ └── Solution.java │ ├── home03 │ └── Solution.java │ ├── home04 │ └── Solution.java │ ├── home05 │ └── Solution.java │ ├── home06 │ └── Solution.java │ ├── home07 │ └── Solution.java │ ├── home08 │ └── Solution.java │ ├── home09 │ └── Solution.java │ └── home10 │ └── Solution.java ├── level19 ├── lesson03 │ ├── task01 │ │ └── Solution.java │ ├── task02 │ │ ├── AdapterFileOutputStream.java │ │ └── AmigoStringWriter.java │ ├── task03 │ │ └── Solution.java │ ├── task04 │ │ ├── Person.java │ │ ├── PersonScanner.java │ │ └── Solution.java │ └── task05 │ │ └── Solution.java ├── lesson05 │ ├── task01 │ │ └── Solution.java │ ├── task02 │ │ └── Solution.java │ ├── task03 │ │ └── Solution.java │ ├── task04 │ │ └── Solution.java │ └── task05 │ │ └── Solution.java ├── lesson08 │ ├── task01 │ │ └── Solution.java │ ├── task02 │ │ └── Solution.java │ ├── task03 │ │ └── Solution.java │ ├── task04 │ │ └── Solution.java │ └── task05 │ │ └── Solution.java └── lesson10 │ ├── bonus02 │ └── FileConsoleWriter.java │ ├── bonus03 │ └── Solution.java │ ├── home01 │ └── Solution.java │ ├── home02 │ └── Solution.java │ ├── home03 │ ├── Person.java │ └── Solution.java │ ├── home04 │ └── Solution.java │ ├── home05 │ └── Solution.java │ ├── home06 │ └── Solution.java │ ├── home07 │ └── Solution.java │ ├── home08 │ └── Solution.java │ ├── home09 │ └── Solution.java │ └── home10 │ └── Solution.java ├── level20 ├── lesson02 │ ├── task01 │ │ ├── Asset.java │ │ └── Solution.java │ ├── task02 │ │ ├── Solution.java │ │ └── User.java │ ├── task03 │ │ └── Solution.java │ ├── task04 │ │ └── Solution.java │ └── task05 │ │ └── Solution.java ├── lesson04 │ ├── task01 │ │ ├── Asset.java │ │ └── Solution.java │ ├── task02 │ │ ├── Solution.java │ │ └── User.java │ ├── task03 │ │ └── Solution.java │ ├── task04 │ │ └── Solution.java │ └── task05 │ │ └── Solution.java ├── lesson07 │ ├── task01 │ │ └── Solution.java │ ├── task02 │ │ └── Solution.java │ ├── task03 │ │ └── Solution.java │ ├── task04 │ │ └── Solution.java │ └── task05 │ │ └── Solution.java └── lesson10 │ ├── bonus01 │ └── Solution.java │ ├── bonus02 │ └── Solution.java │ ├── bonus03 │ └── Solution.java │ ├── bonus04 │ └── Solution.java │ ├── home01 │ └── Solution.java │ ├── home02 │ └── Solution.java │ ├── home03 │ └── Solution.java │ ├── home04 │ └── Solution.java │ ├── home05 │ └── Solution.java │ ├── home06 │ └── Solution.java │ ├── home07 │ └── Solution.java │ ├── home08 │ └── Solution.java │ └── home09 │ └── Solution.java ├── level21 ├── lesson02 │ ├── task01 │ │ └── Solution.java │ ├── task02 │ │ └── Solution.java │ └── task03 │ │ └── Solution.java ├── lesson05 │ ├── task01 │ │ └── Solution.java │ ├── task02 │ │ └── Solution.java │ └── task03 │ │ └── Solution.java ├── lesson08 │ ├── task01 │ │ └── Solution.java │ ├── task02 │ │ └── Solution.java │ └── task03 │ │ └── Solution.java ├── lesson10 │ ├── task01 │ │ └── Solution.java │ ├── task02 │ │ └── Solution.java │ └── task03 │ │ └── Solution.java └── lesson16 │ └── big01 │ ├── Hippodrome.java │ ├── Horse.java │ └── Условие задачи.txt ├── level22 ├── lesson05 │ ├── home01 │ │ ├── Solution.java │ │ ├── Task.java │ │ ├── ThisUncaughtExceptionHandler.java │ │ ├── TooShortStringFirstThreadException.java │ │ └── TooShortStringSecondThreadException.java │ ├── task01 │ │ └── Solution.java │ └── task02 │ │ └── Solution.java ├── lesson07 │ ├── task01 │ │ └── Solution.java │ ├── task02 │ │ └── Solution.java │ └── task03 │ │ └── Solution.java ├── lesson09 │ ├── task01 │ │ └── Solution.java │ ├── task02 │ │ └── Solution.java │ └── task03 │ │ └── Solution.java ├── lesson13 │ ├── task01 │ │ └── Solution.java │ ├── task02 │ │ └── Solution.java │ └── task03 │ │ └── Solution.java └── lesson18 │ └── big01 │ ├── Field.java │ ├── Figure.java │ ├── FigureFactory.java │ ├── KeyboardObserver.java │ ├── Tetris.java │ └── Условие задачи.txt ├── level23 ├── lesson02 │ ├── task01 │ │ └── Solution.java │ ├── task02 │ │ └── Solution.java │ └── task03 │ │ └── Solution.java ├── lesson04 │ ├── home01 │ │ ├── DbMock.java │ │ ├── Solution.java │ │ └── ViewMock.java │ ├── task01 │ │ └── Solution.java │ └── task02 │ │ └── Solution.java ├── lesson06 │ ├── task01 │ │ └── Solution.java │ └── task02 │ │ └── Solution.java ├── lesson08 │ ├── home01 │ │ ├── AbstractDbSelectExecutor.java │ │ ├── Solution.java │ │ └── vo │ │ │ ├── Location.java │ │ │ ├── NamedItem.java │ │ │ ├── Server.java │ │ │ ├── Subject.java │ │ │ ├── Subscription.java │ │ │ └── User.java │ ├── task01 │ │ └── Solution.java │ └── task02 │ │ └── Solution.java └── lesson13 │ └── big01 │ ├── KeyboardObserver.java │ ├── Mouse.java │ ├── Room.java │ ├── Snake.java │ ├── SnakeDirection.java │ ├── SnakeSection.java │ └── Условие задачи.txt ├── level24 ├── lesson02 │ ├── home01 │ │ ├── SelfInterfaceMarker.java │ │ ├── SelfInterfaceMarkerImpl.java │ │ ├── Solution.java │ │ ├── UnsupportedInterfaceMarkerException.java │ │ └── Util.java │ ├── task01 │ │ └── Solution.java │ └── task02 │ │ └── Solution.java ├── lesson04 │ ├── home01 │ │ ├── HasHeight.java │ │ ├── HasWidth.java │ │ ├── Point.java │ │ └── Solution.java │ ├── home02 │ │ ├── Action.java │ │ ├── FirstClass.java │ │ ├── SecondClass.java │ │ └── Solution.java │ └── task01 │ │ └── Solution.java ├── lesson06 │ ├── home01 │ │ ├── Cat.java │ │ ├── Mouse.java │ │ ├── Pet.java │ │ ├── Sayable.java │ │ ├── Solution.java │ │ └── Util.java │ ├── home02 │ │ ├── Dog.java │ │ ├── Mouse.java │ │ ├── Pet.java │ │ ├── Sayable.java │ │ ├── Solution.java │ │ ├── SuperDog.java │ │ └── Util.java │ └── home03 │ │ ├── Solution.java │ │ └── Util.java ├── lesson09 │ ├── home01 │ │ ├── Iterator.java │ │ └── Solution.java │ ├── task01 │ │ └── Solution.java │ └── task02 │ │ └── Solution.java └── lesson14 │ └── big01 │ ├── Arcanoid.java │ ├── Ball.java │ ├── BaseObject.java │ ├── Brick.java │ ├── Canvas.java │ ├── KeyboardObserver.java │ ├── Stand.java │ └── Условие задачи.txt ├── level25 ├── lesson02 │ ├── home01 │ │ ├── Column.java │ │ ├── Columnable.java │ │ └── Solution.java │ ├── task01 │ │ └── Solution.java │ └── task02 │ │ └── Solution.java ├── lesson05 │ ├── home01 │ │ ├── LoggingStateThread.java │ │ └── Solution.java │ ├── task01 │ │ └── Solution.java │ └── task02 │ │ └── Solution.java ├── lesson07 │ ├── home01 │ │ ├── CustomThreadManipulator.java │ │ ├── Solution.java │ │ └── TaskManipulator.java │ ├── home02 │ │ ├── CancellableTask.java │ │ ├── SocketTask.java │ │ └── Solution.java │ └── task01 │ │ └── Solution.java ├── lesson09 │ ├── task01 │ │ └── Solution.java │ ├── task02 │ │ └── Solution.java │ └── task03 │ │ └── Solution.java ├── lesson11 │ ├── task01 │ │ └── Solution.java │ └── task02 │ │ └── Solution.java └── lesson16 │ └── big01 │ ├── BaseObject.java │ ├── Bomb.java │ ├── Canvas.java │ ├── KeyboardObserver.java │ ├── Rocket.java │ ├── Space.java │ ├── SpaceShip.java │ ├── Ufo.java │ └── Условие задачи.txt ├── level26 ├── lesson02 │ ├── task01 │ │ └── Solution.java │ ├── task02 │ │ └── Solution.java │ └── task03 │ │ └── Solution.java ├── lesson05 │ ├── task01 │ │ └── Solution.java │ ├── task02 │ │ └── Solution.java │ └── task03 │ │ └── Solution.java ├── lesson08 │ ├── task01 │ │ └── Solution.java │ ├── task02 │ │ └── Solution.java │ └── task03 │ │ └── Solution.java ├── lesson10 │ ├── home01 │ │ ├── Consumer.java │ │ ├── Producer.java │ │ └── Solution.java │ ├── home02 │ │ ├── Consumer.java │ │ ├── Producer.java │ │ └── Solution.java │ └── task01 │ │ └── Solution.java └── lesson15 │ └── big01 │ ├── CashMachine.java │ ├── ConsoleHelper.java │ ├── CurrencyManipulator.java │ ├── CurrencyManipulatorFactory.java │ ├── Operation.java │ ├── command │ ├── Command.java │ ├── CommandExecutor.java │ ├── DepositCommand.java │ ├── ExitCommand.java │ ├── InfoCommand.java │ ├── LoginCommand.java │ └── WithdrawCommand.java │ ├── exception │ ├── InterruptOperationException.java │ └── NotEnoughMoneyException.java │ ├── resources │ ├── common_en.properties │ ├── deposit_en.properties │ ├── exit_en.properties │ ├── info_en.properties │ ├── login_en.properties │ ├── verifiedCards.properties │ └── withdraw_en.properties │ └── Условие задачи.txt ├── level27 ├── lesson02 │ ├── task01 │ │ └── Solution.java │ └── task02 │ │ └── Solution.java ├── lesson04 │ ├── home01 │ │ ├── Solution.java │ │ └── ThreadDeadlock.java │ ├── task01 │ │ └── Solution.java │ └── task02 │ │ └── Solution.java ├── lesson06 │ ├── home01 │ │ ├── Apartment.java │ │ ├── RealEstate.java │ │ └── Solution.java │ ├── task01 │ │ └── Solution.java │ └── task02 │ │ └── Solution.java ├── lesson09 │ ├── home01 │ │ ├── ConsumerTask.java │ │ ├── ProducerTask.java │ │ ├── Solution.java │ │ └── TransferObject.java │ ├── home02 │ │ ├── Mail.java │ │ ├── MailServer.java │ │ ├── Person.java │ │ └── Solution.java │ └── task01 │ │ └── Solution.java └── lesson15 │ └── big01 │ ├── ConsoleHelper.java │ ├── Restaurant.java │ ├── Tablet.java │ ├── ad │ ├── Advertisement.java │ ├── AdvertisementManager.java │ ├── AdvertisementStorage.java │ └── NoVideoAvailableException.java │ ├── kitchen │ ├── Cook.java │ ├── Dish.java │ ├── Order.java │ └── Waitor.java │ ├── statistic │ ├── StatisticManager.java │ └── event │ │ ├── CookedOrderEventDataRow.java │ │ ├── EventDataRow.java │ │ ├── EventType.java │ │ ├── NoAvailableVideoEventDataRow.java │ │ └── VideoSelectedEventDataRow.java │ └── Условие задачи.txt ├── level28 ├── lesson02 │ └── task01 │ │ └── Solution.java ├── lesson04 │ ├── task01 │ │ └── Solution.java │ └── task02 │ │ └── Solution.java ├── lesson06 │ ├── home01 │ │ ├── MyThread.java │ │ └── Solution.java │ └── task01 │ │ └── Solution.java ├── lesson08 │ ├── task01 │ │ └── Solution.java │ └── task02 │ │ └── Solution.java ├── lesson10 │ ├── home01 │ │ ├── Character.java │ │ ├── Plant.java │ │ ├── Solution.java │ │ ├── Zombie.java │ │ └── output.txt │ └── task01 │ │ └── Solution.java └── lesson15 │ └── big01 │ ├── Aggregator.java │ ├── Controller.java │ ├── model │ ├── HHStrategy.java │ ├── Model.java │ ├── MoikrugStrategy.java │ ├── Provider.java │ └── Strategy.java │ ├── view │ ├── HtmlView.java │ ├── View.java │ ├── backup.html │ └── vacancies.html │ ├── vo │ └── Vacancy.java │ └── Условие задачи.txt ├── level29 ├── lesson02 │ ├── task01 │ │ └── Solution.java │ └── task02 │ │ ├── Solution.java │ │ └── file.txt ├── lesson05 │ ├── task01 │ │ └── Solution.java │ └── task02 │ │ └── Solution.java ├── lesson07 │ ├── task01 │ │ └── Solution.java │ └── task02 │ │ └── Solution.java ├── lesson09 │ ├── bonus01 │ │ ├── CacheComputeManager.java │ │ ├── Computable.java │ │ ├── Copyright.java │ │ ├── Solution.java │ │ └── Square.java │ └── task01 │ │ └── Solution.java └── lesson15 │ └── big01 │ ├── car │ ├── Cabriolet.java │ ├── Car.java │ ├── Sedan.java │ └── Truck.java │ ├── human │ ├── Alive.java │ ├── BloodGroup.java │ ├── Human.java │ ├── Soldier.java │ ├── Student.java │ ├── StudentsDataBase.java │ ├── Teacher.java │ ├── University.java │ ├── UniversityPerson.java │ └── Worker.java │ ├── user │ ├── Address.java │ ├── User.java │ ├── UserHelper.java │ └── Work.java │ └── Условие задачи.txt ├── level30 ├── lesson02 │ ├── home01 │ │ ├── Number.java │ │ ├── NumerationSystem.java │ │ ├── NumerationSystemType.java │ │ └── Solution.java │ └── task01 │ │ └── Solution.java ├── lesson04 │ └── home01 │ │ ├── Consumer.java │ │ ├── Producer.java │ │ ├── ShareItem.java │ │ ├── Solution.java │ │ └── output.txt ├── lesson06 │ ├── home01 │ │ ├── BinaryRepresentationTask.java │ │ └── Solution.java │ └── task01 │ │ └── Solution.java ├── lesson08 │ ├── home01 │ │ ├── Pair.java │ │ └── Solution.java │ └── task01 │ │ └── Solution.java └── lesson15 │ └── big01 │ ├── Connection.java │ ├── ConsoleHelper.java │ ├── Message.java │ ├── MessageType.java │ ├── Server.java │ ├── client │ ├── BotClient.java │ ├── Client.java │ ├── ClientGuiController.java │ ├── ClientGuiModel.java │ └── ClientGuiView.java │ └── Условие задачи.txt ├── level31 ├── lesson02 │ └── home02 │ │ └── Solution.java ├── lesson04 │ └── home01 │ │ └── Solution.java ├── lesson08 │ ├── home01 │ │ ├── ConcreteFileData.java │ │ ├── FileData.java │ │ ├── NullFileData.java │ │ └── Solution.java │ └── home02 │ │ └── Solution.java └── lesson15 │ └── big01 │ ├── Archiver.java │ ├── CommandExecutor.java │ ├── ConsoleHelper.java │ ├── FileManager.java │ ├── FileProperties.java │ ├── Operation.java │ ├── ZipFileManager.java │ ├── command │ ├── Command.java │ ├── ExitCommand.java │ ├── ZipAddCommand.java │ ├── ZipCommand.java │ ├── ZipContentCommand.java │ ├── ZipCreateCommand.java │ ├── ZipExtractCommand.java │ └── ZipRemoveCommand.java │ ├── exception │ ├── PathIsNotFoundException.java │ └── WrongZipFileException.java │ └── Условие задачи.txt ├── level32 ├── lesson02 │ └── task01 │ │ └── Solution.java ├── lesson04 │ ├── home01 │ │ ├── Solution.java │ │ └── file.txt │ └── task01 │ │ └── Solution.java ├── lesson06 │ └── task01 │ │ └── Solution.java ├── lesson08 │ ├── bonus01 │ │ ├── Big.java │ │ ├── Item.java │ │ ├── ItemInvocationHandler.java │ │ ├── Small.java │ │ └── Solution.java │ └── home01 │ │ ├── CustomInvocationHandler.java │ │ ├── Solution.java │ │ ├── SomeInterfaceWithMethods.java │ │ └── SomeInterfaceWithMethodsImpl.java ├── lesson10 │ └── home01 │ │ ├── DoubleString.java │ │ ├── DoubleStringImpl.java │ │ └── Solution.java └── lesson15 │ └── big01 │ ├── Controller.java │ ├── ExceptionHandler.java │ ├── HTMLFileFilter.java │ ├── MenuHelper.java │ ├── View.java │ ├── actions │ ├── RedoAction.java │ ├── StrikeThroughAction.java │ ├── SubscriptAction.java │ ├── SuperscriptAction.java │ └── UndoAction.java │ ├── listeners │ ├── FrameListener.java │ ├── TabbedPaneChangeListener.java │ ├── TextEditMenuListener.java │ ├── UndoListener.java │ └── UndoMenuListener.java │ └── Условие задачи.txt ├── level33 ├── lesson05 │ ├── home01 │ │ └── Solution.java │ ├── home02 │ │ └── Solution.java │ ├── home03 │ │ └── Solution.java │ ├── home04 │ │ └── Solution.java │ └── home05 │ │ ├── Auto.java │ │ ├── Car.java │ │ ├── Motorbike.java │ │ ├── Parking.java │ │ ├── RaceBike.java │ │ └── Solution.java ├── lesson08 │ ├── home01 │ │ └── Solution.java │ └── home02 │ │ └── Solution.java ├── lesson10 │ └── home01 │ │ ├── Shop.java │ │ ├── Solution.java │ │ └── data.xml └── lesson15 │ └── big01 │ ├── ExceptionHandler.java │ ├── Helper.java │ ├── Shortener.java │ ├── Solution.java │ ├── strategies │ ├── Entry.java │ ├── HashMapStorageStrategy.java │ └── StorageStrategy.java │ └── Условие задачи.txt ├── level34 ├── lesson02 │ ├── home01 │ │ └── Solution.java │ ├── task01 │ │ └── Solution.java │ ├── task02 │ │ └── Solution.java │ └── task03 │ │ └── Solution.java ├── lesson04 │ └── task01 │ │ └── Solution.java ├── lesson06 │ └── task01 │ │ └── Solution.java ├── lesson08 │ └── task01 │ │ └── Solution.java └── lesson15 │ └── big01 │ ├── controller │ ├── Controller.java │ └── EventListener.java │ ├── model │ ├── Box.java │ ├── CollisionObject.java │ ├── Direction.java │ ├── GameObject.java │ ├── GameObjects.java │ ├── Home.java │ ├── LevelLoader.java │ ├── Model.java │ ├── Movable.java │ ├── Player.java │ └── Wall.java │ ├── res │ └── levels.txt │ ├── view │ ├── Field.java │ └── View.java │ └── Условие задачи.txt ├── level35 ├── lesson04 │ ├── home01 │ │ ├── GenericStatic.java │ │ └── Solution.java │ └── task01 │ │ └── Solution.java ├── lesson06 │ ├── home01 │ │ ├── ClassForGenerics.java │ │ ├── InterfaceForGenerics.java │ │ └── Solution.java │ └── task01 │ │ └── Solution.java ├── lesson08 │ └── task01 │ │ └── Solution.java └── lesson10 │ └── task02 │ └── Solution.java ├── level36 ├── lesson04 │ ├── big01 │ │ ├── Solution.java │ │ ├── Util.java │ │ ├── bean │ │ │ └── User.java │ │ ├── controller │ │ │ └── Controller.java │ │ ├── dao │ │ │ ├── UserDao.java │ │ │ └── mock │ │ │ │ └── DataSource.java │ │ ├── model │ │ │ ├── FakeModel.java │ │ │ ├── MainModel.java │ │ │ ├── Model.java │ │ │ ├── ModelData.java │ │ │ └── service │ │ │ │ ├── UserService.java │ │ │ │ └── UserServiceImpl.java │ │ ├── view │ │ │ ├── EditUserView.java │ │ │ ├── UsersView.java │ │ │ └── View.java │ │ └── Условие задачи.txt │ └── home01 │ │ ├── Controller.java │ │ ├── Model.java │ │ ├── Service.java │ │ ├── Solution.java │ │ └── View.java ├── lesson06 │ ├── task01 │ │ └── Solution.java │ └── task02 │ │ └── Solution.java ├── lesson08 │ └── task01 │ │ ├── Solution.java │ │ └── file └── lesson10 │ └── task01 │ └── Solution.java ├── level37 ├── lesson04 │ ├── big01 │ │ ├── AbstractFactory.java │ │ ├── FactoryProducer.java │ │ ├── Human.java │ │ ├── Solution.java │ │ ├── female │ │ │ ├── FemaleFactory.java │ │ │ ├── KidGirl.java │ │ │ ├── TeenGirl.java │ │ │ └── Woman.java │ │ ├── male │ │ │ ├── KidBoy.java │ │ │ ├── MaleFactory.java │ │ │ ├── Man.java │ │ │ └── TeenBoy.java │ │ └── Условие.txt │ └── task01 │ │ └── Solution.java ├── lesson06 │ ├── task01 │ │ └── Solution.java │ ├── task02 │ │ └── Solution.java │ └── task03 │ │ └── Solution.java └── lesson10 │ ├── big01 │ ├── AmigoSet.java │ ├── HashMapReflectionHelper.java │ └── Условие.txt │ └── task01 │ └── Solution.java ├── level38 ├── lesson04 │ ├── home01 │ │ ├── NameChecker.java │ │ ├── NameIsEmptyException.java │ │ ├── NameIsNullException.java │ │ └── Solution.java │ ├── task01 │ │ └── VeryComplexClass.java │ └── task02 │ │ └── VeryComplexClass.java ├── lesson06 │ ├── home02 │ │ ├── Connection.java │ │ ├── ConnectionException.java │ │ ├── ConnectionMock.java │ │ ├── Solution.java │ │ ├── SolutionException.java │ │ └── WrongDataException.java │ └── task01 │ │ └── Solution.java ├── lesson08 │ ├── task01 │ │ └── Solution.java │ └── task02 │ │ └── Solution.java └── lesson10 │ ├── home01 │ ├── IncorrectAccount.java │ ├── JavaRushBankAccount.java │ ├── LongPositive.java │ ├── ReflectionAnnotationUtil.java │ └── Solution.java │ └── home02 │ ├── Author.java │ ├── Changelog.java │ ├── Date.java │ ├── Position.java │ ├── Revision.java │ └── Solution.java └── level40 ├── lesson04 ├── task01 │ └── Solution.java └── task02 │ └── Solution.java ├── lesson06 └── task01 │ └── Solution.java └── lesson08 ├── home01 ├── Client.java ├── Connection.java └── Server.java └── task01 └── Solution.java /.gitignore: -------------------------------------------------------------------------------- 1 | /src/com/javarush/test/level27/old 2 | # Built application files 3 | *.apk 4 | *.ap_ 5 | 6 | # Files for the Dalvik VM 7 | *.dex 8 | 9 | # Java class files 10 | *.class 11 | 12 | # Generated files 13 | bin/ 14 | gen/ 15 | 16 | # Gradle files 17 | .gradle/ 18 | build/ 19 | 20 | # Local configuration file (sdk path, etc) 21 | local.properties 22 | 23 | # Proguard folder generated by Eclipse 24 | proguard/ 25 | 26 | # Log Files 27 | *.log 28 | 29 | # Android Studio Navigation editor temp files 30 | .navigation/ 31 | /src/JavaRushPlugin.properties 32 | /JavaRushHomeWork.iml 33 | /out 34 | /.idea 35 | 36 | # Android Studio captures folder 37 | captures/ 38 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # JavaRush -------------------------------------------------------------------------------- /src/com/javarush/test/level09/lesson02/task05/Solution.java: -------------------------------------------------------------------------------- 1 | package com.javarush.test.level09.lesson02.task05; 2 | 3 | /* Метод должен возвращать результат – глубину его стек-трейса 4 | Написать метод, который возвращает результат – глубину его стек трейса – количество методов в нем (количество элементов в списке). 5 | Это же число метод должен выводить на экран. 6 | */ 7 | 8 | public class Solution 9 | { 10 | public static int getStackTraceDeep() 11 | { 12 | //напишите тут ваш код 13 | int i = Thread.currentThread().getStackTrace().length; 14 | System.out.print(i); 15 | return i; 16 | 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /src/com/javarush/test/level09/lesson11/home01/Solution.java: -------------------------------------------------------------------------------- 1 | package com.javarush.test.level09.lesson11.home01; 2 | 3 | /* Деление на ноль 4 | Создай метод public static void divisionByZero, в котором подели любое число на ноль и выведи на экран результат деления. 5 | Оберни вызов метода divisionByZero в try..catch. Выведи стек-трейс исключения используя метод exception.printStackTrace() 6 | */ 7 | 8 | public class Solution { 9 | 10 | public static void main(String[] args) { 11 | try 12 | { 13 | divisionByZero(); 14 | } catch (Exception exception){ 15 | exception.printStackTrace(); 16 | } 17 | } 18 | 19 | private static void divisionByZero() 20 | { 21 | int a = 9/0; 22 | System.out.println(a); 23 | } 24 | 25 | 26 | 27 | 28 | } 29 | -------------------------------------------------------------------------------- /src/com/javarush/test/level09/lesson11/home02/Solution.java: -------------------------------------------------------------------------------- 1 | package com.javarush.test.level09.lesson11.home02; 2 | 3 | /* Обратный отсчёт от 10 до 0 4 | Написать в цикле обратный отсчёт от 10 до 0. Для задержки иcпользовать Thread.sleep(100); 5 | Обернуть вызов sleep в try..catch. 6 | */ 7 | 8 | public class Solution 9 | { 10 | public static void main(String[] args) 11 | { 12 | for (int i = 10; i >= 0; i--) 13 | { 14 | try 15 | { 16 | Thread.sleep(100); 17 | } 18 | catch (Exception exception){} 19 | System.out.println(i); 20 | 21 | //напишите тут ваш код 22 | } 23 | } 24 | } 25 | -------------------------------------------------------------------------------- /src/com/javarush/test/level09/lesson11/home04/Solution.java: -------------------------------------------------------------------------------- 1 | package com.javarush.test.level09.lesson11.home04; 2 | 3 | import java.io.BufferedReader; 4 | import java.io.InputStreamReader; 5 | import java.text.SimpleDateFormat; 6 | 7 | /* Конвертер дат 8 | Ввести с клавиатуры дату в формате «08/18/2013» 9 | Вывести на экран эту дату в виде «AUG 18, 2013». 10 | Воспользоваться объектом Date и SimpleDateFormat. 11 | */ 12 | 13 | public class Solution { 14 | 15 | public static void main(String[] args) throws Exception { 16 | //напишите тут ваш код 17 | BufferedReader reader = new BufferedReader(new InputStreamReader(System.in)); 18 | 19 | SimpleDateFormat sdf = new SimpleDateFormat("MMM d, y"); 20 | 21 | 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /src/com/javarush/test/level09/lesson11/home07/Solution.java: -------------------------------------------------------------------------------- 1 | package com.javarush.test.level09.lesson11.home07; 2 | 3 | /* Расставь модификаторы static 4 | Расставь модификаторы static так, чтобы пример скомпилировался. 5 | */ 6 | 7 | public class Solution 8 | { 9 | public static int A = 5; 10 | public static int B = 2 * A; 11 | public int C = A * B; 12 | public static int D = A * B; 13 | 14 | public void main(String[] args) 15 | { 16 | Solution room = new Solution(); 17 | room.A = 5; 18 | 19 | Solution.D = 5; 20 | } 21 | 22 | public int getA() 23 | { 24 | return A; 25 | } 26 | 27 | } 28 | -------------------------------------------------------------------------------- /src/com/javarush/test/level10/lesson04/task03/Solution.java: -------------------------------------------------------------------------------- 1 | package com.javarush.test.level10.lesson04.task03; 2 | 3 | /* Задача №3 на преобразование целых типов 4 | Добавить одну операцию по преобразованию типа, чтобы получался ответ: b=0 5 | float f = (float)128.50; 6 | int i = (int)f; 7 | int b = (int)(i + f); 8 | */ 9 | 10 | public class Solution 11 | { 12 | public static void main(String[] args) 13 | { 14 | float f = (float)128.50; 15 | int i = (int)f; 16 | int b = (byte)(i + f); 17 | System.out.println(b); 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /src/com/javarush/test/level10/lesson04/task04/Solution.java: -------------------------------------------------------------------------------- 1 | package com.javarush.test.level10.lesson04.task04; 2 | 3 | /* Задача №4 на преобразование целых типов 4 | Добавить одну операцию по преобразованию типа, чтобы получался ответ: nine=9 5 | short number = 9; 6 | char zero = '0'; 7 | int nine = (zero + number); 8 | */ 9 | 10 | public class Solution 11 | { 12 | public static void main(String[] args) 13 | { 14 | short number = 9; 15 | char zero = '0'; 16 | int nine = (zero + number); 17 | System.out.println((char)nine); 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /src/com/javarush/test/level10/lesson11/home01/Solution.java: -------------------------------------------------------------------------------- 1 | package com.javarush.test.level10.lesson11.home01; 2 | 3 | /* Правильный ответ: d=2.941 4 | Добавить одну операцию по преобразованию типа, чтобы получался ответ: d=2.941. 5 | */ 6 | 7 | public class Solution 8 | { 9 | public static void main(String[] args) 10 | { 11 | int a = 50; 12 | int b = 17; 13 | double d = (double)a / b; 14 | System.out.println(d); 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /src/com/javarush/test/level10/lesson11/home02/Solution.java: -------------------------------------------------------------------------------- 1 | package com.javarush.test.level10.lesson11.home02; 2 | 3 | /* Правильный ответ: d=5.5 4 | Добавить одну операцию по преобразованию типа, чтобы получался ответ: d=5.5. 5 | */ 6 | 7 | public class Solution 8 | { 9 | public static void main(String[] args) 10 | { 11 | int a = 5; 12 | int b = 4; 13 | int c = 3; 14 | int e = 2; 15 | double d = a + b/c/(double)e; 16 | System.out.println(d); 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /src/com/javarush/test/level10/lesson11/home03/Solution.java: -------------------------------------------------------------------------------- 1 | package com.javarush.test.level10.lesson11.home03; 2 | 3 | /* Правильный ответ: d=1.0 4 | Добавить одну операцию по преобразованию типа, чтобы получался ответ: d=1.0. 5 | */ 6 | 7 | public class Solution 8 | { 9 | public static void main(String[] args) 10 | { 11 | int a = 257; 12 | int b = 4; 13 | int c = 3; 14 | int e = 2; 15 | double d = (byte)a + b/c/e; 16 | 17 | System.out.println(d); 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /src/com/javarush/test/level10/lesson11/home04/Solution.java: -------------------------------------------------------------------------------- 1 | package com.javarush.test.level10.lesson11.home04; 2 | 3 | /* Большая зарплата 4 | Вывести на экран надпись «Я не хочу изучать Java, я хочу большую зарплату» 40 раз по образцу. 5 | Образец: 6 | Я не хочу изучать Java, я хочу большую зарплату 7 | не хочу изучать Java, я хочу большую зарплату 8 | не хочу изучать Java, я хочу большую зарплату 9 | е хочу изучать Java, я хочу большую зарплату 10 | хочу изучать Java, я хочу большую зарплату 11 | хочу изучать Java, я хочу большую зарплату 12 | … 13 | */ 14 | 15 | public class Solution 16 | { 17 | public static void main(String[] args) 18 | { 19 | String s = "Я не хочу изучать Java, я хочу большую зарплату"; 20 | 21 | for (int i = 0; i<40;i++){ 22 | String a =s.substring(i,s.length()); 23 | System.out.println(a); 24 | } 25 | } 26 | 27 | } 28 | -------------------------------------------------------------------------------- /src/com/javarush/test/level10/lesson11/home07/Solution.java: -------------------------------------------------------------------------------- 1 | package com.javarush.test.level10.lesson11.home07; 2 | 3 | /* Расставьте минимум static-ов 4 | Расставьте как можно меньше модификаторов static так, чтобы пример скомпилировался. 5 | */ 6 | 7 | public class Solution 8 | { 9 | public int A = 5; 10 | public static int B = 5; 11 | public static int C = 5; 12 | public static int D = 5; 13 | 14 | public static void main(String[] args) 15 | { 16 | Solution solution = new Solution(); 17 | solution.A = 5; 18 | solution.B = 5 * B; 19 | solution.C = 5 * C * D; 20 | Solution.D = 5 * D * C; 21 | 22 | Solution.D = 5; 23 | } 24 | 25 | public int getA() 26 | { 27 | return A; 28 | } 29 | 30 | } 31 | -------------------------------------------------------------------------------- /src/com/javarush/test/level11/lesson11/bonus01/Solution.java: -------------------------------------------------------------------------------- 1 | package com.javarush.test.level11.lesson11.bonus01; 2 | 3 | /* Нужно исправить программу, чтобы компилировалась и работала 4 | Исправь наследование в классах: (классы Cat, Dog, Pet, House, Airplane). 5 | */ 6 | 7 | public class Solution 8 | { 9 | public static void main(String[] args) 10 | { 11 | } 12 | 13 | public class Pet 14 | { 15 | 16 | } 17 | 18 | public class Cat extends Pet 19 | { 20 | 21 | } 22 | 23 | public class Dog extends Pet 24 | { 25 | 26 | } 27 | 28 | public class House 29 | { 30 | 31 | } 32 | 33 | public class Airplane 34 | { 35 | 36 | } 37 | } 38 | -------------------------------------------------------------------------------- /src/com/javarush/test/level11/lesson11/bonus02/Solution.java: -------------------------------------------------------------------------------- 1 | package com.javarush.test.level11.lesson11.bonus02; 2 | 3 | /* Нужно добавить в программу новую функциональность 4 | Добавь общий базовый класс к классам-фигур: (фигуры из шахмат). 5 | */ 6 | 7 | public class Solution 8 | { 9 | public static void main(String[] args) 10 | { 11 | } 12 | public class Chesh 13 | { 14 | } 15 | public class King extends Chesh 16 | { 17 | } 18 | 19 | public class Queen extends Chesh 20 | { 21 | } 22 | 23 | public class Rook extends Chesh 24 | { 25 | } 26 | 27 | public class Knight extends Chesh 28 | { 29 | } 30 | 31 | public class Bishop extends Chesh 32 | { 33 | } 34 | 35 | public class Pawn extends Chesh 36 | { 37 | } 38 | } 39 | -------------------------------------------------------------------------------- /src/com/javarush/test/level11/lesson11/bonus03/Solution.java: -------------------------------------------------------------------------------- 1 | package com.javarush.test.level11.lesson11.bonus03; 2 | 3 | /* Задача по алгоритмам 4 | Написать метод, который возвращает минимальное и максимальное числа в массиве. 5 | */ 6 | 7 | public class Solution 8 | { 9 | public static void main(String[] args) throws Exception 10 | { 11 | int[] data = new int[]{1, 2, 3, 5, -2, -8, 0, 77, 5, 5}; 12 | 13 | 14 | 15 | 16 | } 17 | 18 | 19 | 20 | 21 | public static class Pair 22 | { 23 | public X x; 24 | public Y y; 25 | 26 | public Pair(X x, Y y) 27 | { 28 | this.x = x; 29 | this.y = y; 30 | } 31 | } 32 | } 33 | -------------------------------------------------------------------------------- /src/com/javarush/test/level11/lesson11/home01/Solution.java: -------------------------------------------------------------------------------- 1 | package com.javarush.test.level11.lesson11.home01; 2 | 3 | /* Адам и Ева 4 | Написать два класса Adam(Адам) и Eve(Ева). 5 | Унаследовать Еву от Адама. 6 | */ 7 | 8 | public class Solution 9 | { 10 | public static void main(String[] args) 11 | { 12 | } 13 | 14 | //Адам 15 | public class Adam 16 | { 17 | 18 | } 19 | 20 | //Ева 21 | public class Eve extends Adam 22 | { 23 | 24 | } 25 | } 26 | -------------------------------------------------------------------------------- /src/com/javarush/test/level11/lesson11/home02/Solution.java: -------------------------------------------------------------------------------- 1 | package com.javarush.test.level11.lesson11.home02; 2 | 3 | /* AppleIPhone и SamsungGalaxyS2 4 | Написать два класса AppleIPhone и SamsungGalaxyS2. 5 | Унаследовать SamsungGalaxyS2 от AppleIPhone. 6 | */ 7 | 8 | public class Solution 9 | { 10 | public static void main(String[] args) 11 | { 12 | } 13 | 14 | public class AppleIPhone 15 | { 16 | 17 | } 18 | 19 | public class SamsungGalaxyS2 extends AppleIPhone 20 | { 21 | 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /src/com/javarush/test/level11/lesson11/home03/Solution.java: -------------------------------------------------------------------------------- 1 | package com.javarush.test.level11.lesson11.home03; 2 | 3 | /* Эволюция 4 | Написать четыре класса: Fish(Рыбы), Animal(Животные), Ape(Обезьяны), Human (Человек). 5 | Унаследовать животных от рыб, обезьян от животных и человека от обезьян. 6 | */ 7 | 8 | public class Solution 9 | { 10 | public static void main(String[] args) 11 | { 12 | } 13 | 14 | public class Fish 15 | { 16 | 17 | } 18 | 19 | public class Animal extends Fish 20 | { 21 | 22 | } 23 | 24 | public class Ape extends Animal 25 | { 26 | 27 | } 28 | 29 | public class Human extends Ape 30 | { 31 | 32 | } 33 | 34 | } 35 | -------------------------------------------------------------------------------- /src/com/javarush/test/level11/lesson11/home04/Solution.java: -------------------------------------------------------------------------------- 1 | package com.javarush.test.level11.lesson11.home04; 2 | 3 | /* Религии 4 | Написать три класса: Judaism(Иудаизм), Christianity(Христианство), Islam(Мусульманство) 5 | Унаследовать христианство от иудаизма и мусульманство от христианства. 6 | */ 7 | 8 | public class Solution 9 | { 10 | public static void main(String[] args) 11 | { 12 | } 13 | 14 | public class Judaism 15 | { 16 | 17 | } 18 | 19 | public class Christianity extends Judaism 20 | { 21 | 22 | } 23 | 24 | public class Islam extends Christianity 25 | { 26 | 27 | } 28 | 29 | } 30 | -------------------------------------------------------------------------------- /src/com/javarush/test/level11/lesson11/home05/Solution.java: -------------------------------------------------------------------------------- 1 | package com.javarush.test.level11.lesson11.home05; 2 | 3 | /* От школьника к рабству 4 | Написать четыре класса: Schoolboy(школьник), Student(студент), Worker(Сотрудник), Slave (Раб) 5 | Унаследовать студента от школьника, сотрудника от студента, раба от сотрудника. 6 | */ 7 | 8 | public class Solution 9 | { 10 | public static void main(String[] args) 11 | { 12 | } 13 | 14 | public class Schoolboy 15 | { 16 | 17 | } 18 | 19 | public class Student extends Schoolboy 20 | { 21 | 22 | } 23 | 24 | public class Worker extends Student 25 | { 26 | 27 | } 28 | 29 | public class Slave extends Worker 30 | { 31 | 32 | } 33 | 34 | } 35 | -------------------------------------------------------------------------------- /src/com/javarush/test/level11/lesson11/home06/Solution.java: -------------------------------------------------------------------------------- 1 | package com.javarush.test.level11.lesson11.home06; 2 | 3 | /* Первая правильная «цепочка наследования» 4 | Расставь правильно «цепочку наследования» в классах: Pet (домашнее животное), Cat (кот), Dog(собака). 5 | */ 6 | 7 | public class Solution 8 | { 9 | public static void main(String[] args) 10 | { 11 | } 12 | 13 | public class Pet 14 | { 15 | 16 | } 17 | 18 | public class Cat extends Pet 19 | { 20 | 21 | } 22 | 23 | public class Dog extends Pet 24 | { 25 | 26 | } 27 | } 28 | -------------------------------------------------------------------------------- /src/com/javarush/test/level11/lesson11/home07/Solution.java: -------------------------------------------------------------------------------- 1 | package com.javarush.test.level11.lesson11.home07; 2 | 3 | /* Вторая правильная «цепочка наследования» 4 | Расставь правильно «цепочку наследования» в классах: Carnivora (плотоядное животное), Cow (корова), Dog(собака), Pig(свинья), Animal (животное). 5 | */ 6 | 7 | public class Solution 8 | { 9 | public static void main(String[] args) 10 | { 11 | } 12 | 13 | public class Carnivora extends Animal 14 | { 15 | 16 | } 17 | 18 | public class Cow extends Animal 19 | { 20 | 21 | } 22 | 23 | public class Dog extends Carnivora 24 | { 25 | 26 | } 27 | 28 | public class Pig extends Animal 29 | { 30 | 31 | } 32 | 33 | public class Animal 34 | { 35 | 36 | } 37 | } 38 | -------------------------------------------------------------------------------- /src/com/javarush/test/level11/lesson11/home08/Solution.java: -------------------------------------------------------------------------------- 1 | package com.javarush.test.level11.lesson11.home08; 2 | 3 | /* Третья правильная «цепочка наследования» 4 | Расставь правильно «цепочку наследования» в классах: Pet (домашнее животное), Cat (кот), Dog(собака), Car (машина). 5 | */ 6 | 7 | public class Solution 8 | { 9 | public static void main(String[] args) 10 | { 11 | } 12 | 13 | public class Pet 14 | { 15 | 16 | } 17 | 18 | public class Cat extends Pet 19 | { 20 | 21 | } 22 | 23 | public class Car 24 | { 25 | 26 | } 27 | 28 | public class Dog extends Pet 29 | { 30 | 31 | } 32 | } 33 | -------------------------------------------------------------------------------- /src/com/javarush/test/level11/lesson11/home09/Solution.java: -------------------------------------------------------------------------------- 1 | package com.javarush.test.level11.lesson11.home09; 2 | 3 | /* Четвертая правильная «цепочка наследования» 4 | Расставь правильно «цепочку наследования» в классах: House (дом), Cat (кот), Dog(собака), Car (машина). 5 | */ 6 | 7 | public class Solution 8 | { 9 | public static void main(String[] args) 10 | { 11 | } 12 | 13 | public class House 14 | { 15 | 16 | } 17 | 18 | public class Cat 19 | { 20 | 21 | } 22 | 23 | public class Car 24 | { 25 | 26 | } 27 | 28 | public class Dog 29 | { 30 | 31 | } 32 | } 33 | -------------------------------------------------------------------------------- /src/com/javarush/test/level11/lesson11/home10/Solution.java: -------------------------------------------------------------------------------- 1 | package com.javarush.test.level11.lesson11.home10; 2 | 3 | /* Пятая правильная «цепочка наследования» 4 | Расставь правильно «цепочку наследования» в классах: House (дом), Cat (кот), Dog(собака), Car (машина), Animal(животное), Assets (имущество). 5 | */ 6 | 7 | public class Solution 8 | { 9 | public static void main(String[] args) 10 | { 11 | } 12 | 13 | public class House extends Assets 14 | { 15 | 16 | } 17 | 18 | public class Cat extends Animal 19 | { 20 | 21 | } 22 | 23 | public class Car extends Assets 24 | { 25 | 26 | } 27 | 28 | public class Dog extends Animal 29 | { 30 | 31 | } 32 | 33 | public class Animal 34 | { 35 | 36 | } 37 | 38 | public class Assets 39 | { 40 | 41 | } 42 | } 43 | -------------------------------------------------------------------------------- /src/com/javarush/test/level12/lesson12/bonus02/Solution.java: -------------------------------------------------------------------------------- 1 | package com.javarush.test.level12.lesson12.bonus02; 2 | 3 | /* Нужно добавить в программу новую функциональность 4 | Сделать класс Pegas(пегас) на основе класса Horse(лошадь) и интерфейса Fly(летать). 5 | */ 6 | 7 | public class Solution 8 | { 9 | public static void main(String[] args) 10 | { 11 | Pegas horse = new Pegas(); 12 | } 13 | 14 | public static interface Fly 15 | { 16 | public void fly(); 17 | } 18 | 19 | public static class Horse 20 | { 21 | public void run() 22 | { 23 | 24 | } 25 | } 26 | 27 | public static class Pegas extends Horse implements Fly 28 | { 29 | @Override 30 | public void fly() 31 | { 32 | 33 | } 34 | } 35 | } 36 | -------------------------------------------------------------------------------- /src/com/javarush/test/level12/lesson12/home01/Solution.java: -------------------------------------------------------------------------------- 1 | package com.javarush.test.level12.lesson12.home01; 2 | 3 | /* Метод getName в классе Cat 4 | Переопредели метод getName в классе Cat так, чтобы программа выдавала на экран надпись 5 | «Я - кот». 6 | */ 7 | 8 | public class Solution 9 | { 10 | public static void main(String[] args) 11 | { 12 | Pet pet = new Cat(); 13 | 14 | System.out.println(pet.getName()); 15 | } 16 | 17 | public static class Pet 18 | { 19 | public String getName() 20 | { 21 | return "Я - пушистик"; 22 | } 23 | } 24 | 25 | public static class Cat extends Pet 26 | { 27 | public String getName() 28 | { 29 | return "Я - кот"; 30 | } 31 | } 32 | } 33 | -------------------------------------------------------------------------------- /src/com/javarush/test/level12/lesson12/home09/Solution.java: -------------------------------------------------------------------------------- 1 | package com.javarush.test.level12.lesson12.home09; 2 | 3 | /* Родитель класса CTO 4 | Добавь такой класс-родитель к классу CTO(технический директор), чтобы класс перестал быть абстрактным. 5 | Добавлять/реализовывать методы в классе CTO запрещается. 6 | */ 7 | 8 | public class Solution 9 | { 10 | 11 | public static void main(String[] args) 12 | { 13 | CTO cto = new CTO(); 14 | System.out.println(cto); 15 | } 16 | 17 | public static interface Businessman 18 | { 19 | public void workHard(); 20 | } 21 | 22 | public static class CTO extends ASD implements Businessman 23 | { 24 | 25 | } 26 | public static class ASD { 27 | public void workHard() 28 | { 29 | 30 | } 31 | } 32 | 33 | } 34 | -------------------------------------------------------------------------------- /src/com/javarush/test/level12/lesson12/home10/Solution.java: -------------------------------------------------------------------------------- 1 | package com.javarush.test.level12.lesson12.home10; 2 | 3 | /* Метод, который выводит на экран число 10 4 | Добавь еще один метод, чтобы программа выводила на экран число 10. 5 | Подсказка: используй перегрузку методов. 6 | */ 7 | 8 | public class Solution 9 | { 10 | public static void main(String[] args) 11 | { 12 | Integer i = 5; 13 | int x = transformValue(i); 14 | System.out.println(x); 15 | } 16 | 17 | public static int transformValue(int i) 18 | { 19 | return i*i; 20 | } 21 | public static int transformValue(Integer i) 22 | { 23 | return i*2; 24 | } 25 | } 26 | -------------------------------------------------------------------------------- /src/com/javarush/test/level13/lesson02/task04/Solution.java: -------------------------------------------------------------------------------- 1 | package com.javarush.test.level13.lesson02.task04; 2 | 3 | /* Selectable и Updatable 4 | 1. Создай класс Screen. 5 | 2. Реализуй в нем интерфейсы Selectable с методом onSelect, Updatable с методом refresh. 6 | */ 7 | 8 | public class Solution 9 | { 10 | public static void main(String[] args) throws Exception 11 | { 12 | } 13 | 14 | interface Selectable 15 | { 16 | void onSelect(); 17 | } 18 | 19 | interface Updatable 20 | { 21 | void refresh(); 22 | } 23 | public class Screen implements Selectable, Updatable{ 24 | 25 | 26 | @Override 27 | public void onSelect() 28 | { 29 | return; 30 | } 31 | 32 | @Override 33 | public void refresh() 34 | { 35 | return; 36 | } 37 | } 38 | 39 | //напишите тут ваш класс 40 | } 41 | -------------------------------------------------------------------------------- /src/com/javarush/test/level13/lesson02/task07/Solution.java: -------------------------------------------------------------------------------- 1 | package com.javarush.test.level13.lesson02.task07; 2 | 3 | /* Параметризованый интерфейс 4 | В классе StringObject реализуй интерфейс SimpleObject с параметром типа String. 5 | */ 6 | 7 | public class Solution 8 | { 9 | public static void main(String[] args) throws Exception 10 | { 11 | } 12 | 13 | interface SimpleObject 14 | { 15 | SimpleObject getInstance(); 16 | } 17 | 18 | class StringObject implements SimpleObject //допишите здесь ваш код 19 | { 20 | @Override 21 | public SimpleObject getInstance() 22 | { 23 | return null; 24 | } 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /src/com/javarush/test/level13/lesson02/task08/Solution.java: -------------------------------------------------------------------------------- 1 | package com.javarush.test.level13.lesson02.task08; 2 | 3 | /* Жив или нет 4 | 1. Создай интерфейс Person. 5 | 2. Добавь в него метод isAlive(), который проверяет, жив человек или нет. 6 | 3. Подумай, какой тип должен возвращать этот метод. 7 | 4. Создай интерфейс Presidentable. 8 | 5. Унаследуй интерфейс Presidentable от интерфейса Person. 9 | */ 10 | 11 | public class Solution 12 | { 13 | public static void main(String[] args) throws Exception 14 | { 15 | } 16 | interface Person{ 17 | public boolean isAlive(); 18 | } 19 | interface Presidentable extends Person{ 20 | 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /src/com/javarush/test/level13/lesson02/task09/Solution.java: -------------------------------------------------------------------------------- 1 | package com.javarush.test.level13.lesson02.task09; 2 | 3 | /* Наследование интерфейса 4 | 1. Создать интерфейс Movable с методом speed. 5 | 2. Метод speed возвращает значение типа Double и не принимает параметров. 6 | 3. Создать и унаследовать интерфейс Runable от интерфейса Movable. 7 | 4. Добавить в интерфейс Runable метод speed. 8 | 5. Метод speed возвращает значение типа Double и принимает один параметр типа Runable. 9 | */ 10 | 11 | public class Solution 12 | { 13 | public static void main(String[] args) throws Exception 14 | { 15 | } 16 | interface Movable{ 17 | public Double speed(); 18 | 19 | } 20 | interface Runable extends Movable{ 21 | 22 | public Double speed( Runable r );; 23 | 24 | } 25 | } 26 | -------------------------------------------------------------------------------- /src/com/javarush/test/level13/lesson04/task02/Solution.java: -------------------------------------------------------------------------------- 1 | package com.javarush.test.level13.lesson04.task02; 2 | 3 | /* Исправление кода 4 | Исправить код так, чтобы программа выполнялась и выводила "Я переводчик с английского". 5 | Метод main менять нельзя! 6 | */ 7 | 8 | public class Solution 9 | { 10 | public static void main(String[] args) throws Exception 11 | { 12 | Translator translator = new Translator(); 13 | System.out.println(translator.translate()); 14 | } 15 | 16 | public static class Translator 17 | { 18 | public String translate() 19 | { 20 | return "Я переводчик с английского"; 21 | } 22 | } 23 | 24 | 25 | } 26 | -------------------------------------------------------------------------------- /src/com/javarush/test/level13/lesson04/task03/Solution.java: -------------------------------------------------------------------------------- 1 | package com.javarush.test.level13.lesson04.task03; 2 | 3 | /* Интерфейс Animal 4 | 1. Унаследовать Fox от интерфейса Animal. 5 | 2. Поменяй код так, чтобы в классе Fox был только один метод - getName. 6 | 3. Создавать дополнительные классы и удалять методы нельзя! 7 | */ 8 | 9 | public class Solution 10 | { 11 | public static void main(String[] args) throws Exception 12 | { 13 | } 14 | 15 | public interface Animal 16 | { 17 | String getName(); 18 | } 19 | 20 | public static class Fox implements Animal 21 | { 22 | public String getName() 23 | { 24 | return "Fox"; 25 | } 26 | 27 | 28 | } 29 | } 30 | -------------------------------------------------------------------------------- /src/com/javarush/test/level13/lesson11/bonus02/Person.java: -------------------------------------------------------------------------------- 1 | package com.javarush.test.level13.lesson11.bonus02; 2 | 3 | public class Person implements RepkaItem 4 | { 5 | private String name; 6 | private String namePadezh; 7 | 8 | public Person(String name, String namePadezh) 9 | { 10 | this.name = name; 11 | this.namePadezh = namePadezh; 12 | } 13 | 14 | @Override 15 | public String getNamePadezh() 16 | { 17 | return namePadezh; 18 | } 19 | public void pull(Person person){ 20 | 21 | System.out.println( name + " за " + person.namePadezh ); 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /src/com/javarush/test/level13/lesson11/bonus02/RepkaItem.java: -------------------------------------------------------------------------------- 1 | package com.javarush.test.level13.lesson11.bonus02; 2 | 3 | public interface RepkaItem 4 | { 5 | public String getNamePadezh(); 6 | } 7 | -------------------------------------------------------------------------------- /src/com/javarush/test/level13/lesson11/bonus02/RepkaStory.java: -------------------------------------------------------------------------------- 1 | package com.javarush.test.level13.lesson11.bonus02; 2 | 3 | import java.util.List; 4 | 5 | public class RepkaStory 6 | { 7 | static void tell(List items) { 8 | 9 | Person first; 10 | Person second; 11 | for (int i = items.size() - 1; i > 0; i--) { 12 | first = items.get(i); 13 | second = items.get(i-1); 14 | first.pull(second); 15 | } 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /src/com/javarush/test/level13/lesson11/bonus03/Attackable.java: -------------------------------------------------------------------------------- 1 | package com.javarush.test.level13.lesson11.bonus03; 2 | 3 | public interface Attackable 4 | { 5 | BodyPart attack(); 6 | } 7 | -------------------------------------------------------------------------------- /src/com/javarush/test/level13/lesson11/bonus03/BodyPart.java: -------------------------------------------------------------------------------- 1 | package com.javarush.test.level13.lesson11.bonus03; 2 | 3 | public final class BodyPart 4 | { 5 | final static BodyPart LEG = new BodyPart("нога"); 6 | final static BodyPart HEAD = new BodyPart("голова"); 7 | final static BodyPart ARM = new BodyPart("рука"); 8 | final static BodyPart BODY = new BodyPart("грудь"); 9 | 10 | private String bodyPart; 11 | 12 | private BodyPart(String bodyPart) 13 | { 14 | this.bodyPart = bodyPart; 15 | } 16 | 17 | @Override 18 | public String toString() 19 | { 20 | return this.bodyPart; 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /src/com/javarush/test/level13/lesson11/bonus03/Defensable.java: -------------------------------------------------------------------------------- 1 | package com.javarush.test.level13.lesson11.bonus03; 2 | 3 | public interface Defensable 4 | { 5 | BodyPart defense(); 6 | } 7 | -------------------------------------------------------------------------------- /src/com/javarush/test/level13/lesson11/bonus03/Robot.java: -------------------------------------------------------------------------------- 1 | package com.javarush.test.level13.lesson11.bonus03; 2 | 3 | public class Robot extends AbstractRobot 4 | { 5 | 6 | public Robot(String name) 7 | { 8 | super(name); 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /src/com/javarush/test/level13/lesson11/home01/Solution.java: -------------------------------------------------------------------------------- 1 | package com.javarush.test.level13.lesson11.home01; 2 | 3 | /* Некорректные строки 4 | Удали все некорректные строки в интерфейсе Button. 5 | */ 6 | 7 | public class Solution 8 | { 9 | public static void main(String[] args) throws Exception 10 | { 11 | System.out.println(SimpleObject.NAME); 12 | System.out.println(Button.NAME); 13 | } 14 | 15 | interface SimpleObject 16 | { 17 | String NAME = "SimpleObject"; 18 | void onPress(); 19 | } 20 | 21 | interface Button extends SimpleObject 22 | { 23 | 24 | final String NAME = "Submit"; 25 | public void onPress(); 26 | 27 | 28 | 29 | 30 | String onPress(Object o); 31 | 32 | 33 | } 34 | } 35 | -------------------------------------------------------------------------------- /src/com/javarush/test/level13/lesson11/home02/Weather.java: -------------------------------------------------------------------------------- 1 | package com.javarush.test.level13.lesson11.home02; 2 | 3 | public interface Weather 4 | { 5 | String getWeatherType(); 6 | } 7 | -------------------------------------------------------------------------------- /src/com/javarush/test/level13/lesson11/home02/WeatherType.java: -------------------------------------------------------------------------------- 1 | package com.javarush.test.level13.lesson11.home02; 2 | 3 | public interface WeatherType 4 | { 5 | String CLOUDY = "Cloudy"; 6 | String FOGGY = "Foggy"; 7 | String FROZEN = "Frozen"; 8 | } 9 | -------------------------------------------------------------------------------- /src/com/javarush/test/level13/lesson11/home03/Solution.java: -------------------------------------------------------------------------------- 1 | package com.javarush.test.level13.lesson11.home03; 2 | 3 | /* Чтение файла 4 | 1. Считать с консоли имя файла. 5 | 2. Вывести в консоль(на экран) содержимое файла. 6 | 3. Не забыть освободить ресурсы. Закрыть поток чтения с файла и поток ввода с клавиатуры. 7 | */ 8 | 9 | import java.io.*; 10 | 11 | public class Solution 12 | { 13 | public static void main(String[] args) throws IOException 14 | { 15 | BufferedReader reader = new BufferedReader(new InputStreamReader(System.in)); 16 | String filename = reader.readLine(); 17 | InputStream inputStream = new FileInputStream(filename); 18 | 19 | while (inputStream.available() > 0) 20 | { 21 | 22 | System.out.print((char) inputStream.read()); 23 | } 24 | 25 | inputStream.close(); 26 | reader.close(); 27 | } 28 | } 29 | -------------------------------------------------------------------------------- /src/com/javarush/test/level13/lesson11/home07/Solution.java: -------------------------------------------------------------------------------- 1 | package com.javarush.test.level13.lesson11.home07; 2 | 3 | /* Интерфейс SimpleObject 4 | 1. Создай класс StringObject. 5 | 2. В классе StringObject реализуй интерфейс SimpleObject с параметром типа String. 6 | 3. Программа должна компилироваться. 7 | */ 8 | 9 | public class Solution 10 | { 11 | public static void main(String[] args) throws Exception 12 | { 13 | SimpleObject stringObject = new StringObject(); 14 | } 15 | 16 | interface SimpleObject 17 | { 18 | SimpleObject getInstance(); 19 | } 20 | static class StringObject implements SimpleObject{ 21 | 22 | @Override 23 | public SimpleObject getInstance() 24 | { 25 | return null; 26 | } 27 | } 28 | 29 | } 30 | -------------------------------------------------------------------------------- /src/com/javarush/test/level13/lesson11/home08/Solution.java: -------------------------------------------------------------------------------- 1 | package com.javarush.test.level13.lesson11.home08; 2 | 3 | /* Интерфейс Updatable в классе Screen 4 | Реализовать интерфейс Updatable в классе Screen. 5 | */ 6 | 7 | public class Solution 8 | { 9 | public static void main(String[] args) throws Exception 10 | { 11 | } 12 | 13 | interface Selectable 14 | { 15 | void onSelect(); 16 | } 17 | 18 | interface Updatable extends Selectable 19 | { 20 | void refresh(); 21 | } 22 | 23 | class Screen implements Updatable 24 | { 25 | 26 | @Override 27 | public void refresh() 28 | { 29 | return; 30 | } 31 | 32 | @Override 33 | public void onSelect() 34 | { 35 | return; 36 | } 37 | } 38 | } 39 | -------------------------------------------------------------------------------- /src/com/javarush/test/level13/lesson11/home09/Solution.java: -------------------------------------------------------------------------------- 1 | package com.javarush.test.level13.lesson11.home09; 2 | 3 | import java.awt.*; 4 | 5 | /* Один метод в классе 6 | 1. Унаследовать Fox от интерфейса Animal. 7 | 2. Поменяй код так, чтобы в классе Fox был только один метод - getName. 8 | 3. Методы удалять нельзя! 9 | */ 10 | 11 | public class Solution 12 | { 13 | public static void main(String[] args) throws Exception 14 | { 15 | } 16 | 17 | public interface Animal 18 | { 19 | Color getColor(); 20 | 21 | Integer getAge(); 22 | } 23 | 24 | public abstract static class Fox implements Animal 25 | { 26 | public String getName() 27 | { 28 | return "Fox"; 29 | } 30 | } 31 | } 32 | -------------------------------------------------------------------------------- /src/com/javarush/test/level14/lesson02/task01/Solution.java: -------------------------------------------------------------------------------- 1 | package com.javarush.test.level14.lesson02.task01; 2 | 3 | /* Bingo 4 | Исправь строчку 'Object o = new Pet();' в методе main так, чтобы программа вывела "Bingo!" 5 | */ 6 | 7 | public class Solution 8 | { 9 | public static void main(String[] args) 10 | { 11 | Object o = new Tiger(); 12 | boolean isCat = o instanceof Cat; 13 | boolean isTiger = o instanceof Tiger; 14 | boolean isPet = o instanceof Pet; 15 | 16 | printResults(isCat, isTiger, isPet); 17 | } 18 | 19 | private static void printResults(boolean cat, boolean tiger, boolean pet) 20 | { 21 | if (cat && tiger && pet) System.out.println("Bingo!"); 22 | } 23 | 24 | static class Pet 25 | { 26 | } 27 | 28 | static class Cat extends Pet 29 | { 30 | } 31 | 32 | static class Tiger extends Cat 33 | { 34 | } 35 | 36 | } 37 | -------------------------------------------------------------------------------- /src/com/javarush/test/level14/lesson02/task02/Solution.java: -------------------------------------------------------------------------------- 1 | package com.javarush.test.level14.lesson02.task02; 2 | 3 | /* Bingo-2 4 | Исправь строчку 'Cat o = new Cat();' так, чтобы программа вывела "Bingo!" 5 | */ 6 | 7 | public class Solution 8 | { 9 | public static void main(String[] args) 10 | { 11 | Cat o = new TomCat(); 12 | 13 | boolean isCat = o instanceof Cat; 14 | boolean isMoveable = o instanceof Moveable; 15 | boolean isTom = o instanceof TomCat; 16 | 17 | if (isCat && isMoveable && isTom) System.out.println("Bingo!"); 18 | 19 | } 20 | 21 | interface Moveable 22 | { 23 | } 24 | 25 | static class Cat 26 | { 27 | } 28 | 29 | static class TomCat extends Cat implements Moveable 30 | { 31 | 32 | } 33 | } 34 | -------------------------------------------------------------------------------- /src/com/javarush/test/level14/lesson06/home01/BelarusianHen.java: -------------------------------------------------------------------------------- 1 | package com.javarush.test.level14.lesson06.home01; 2 | 3 | /** 4 | * Created by Dmitry on 11.09.2015. 5 | */ 6 | public class BelarusianHen extends Hen 7 | { 8 | @Override int getCountOfEggsPerMonth() 9 | { 10 | return 3; 11 | } 12 | 13 | 14 | 15 | String getDescription() 16 | { 17 | return super.getDescription() + " Моя страна - " + BELARUS + ". Я несу " + getCountOfEggsPerMonth() + " яиц в месяц."; 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /src/com/javarush/test/level14/lesson06/home01/Country.java: -------------------------------------------------------------------------------- 1 | package com.javarush.test.level14.lesson06.home01; 2 | 3 | public interface Country 4 | { 5 | String UKRAINE = "Ukraine"; 6 | String RUSSIA = "Russia"; 7 | String MOLDOVA = "Moldova"; 8 | String BELARUS = "Belarus"; 9 | } 10 | -------------------------------------------------------------------------------- /src/com/javarush/test/level14/lesson06/home01/Hen.java: -------------------------------------------------------------------------------- 1 | package com.javarush.test.level14.lesson06.home01; 2 | 3 | /** 4 | * Created by Dmitry on 11.09.2015. 5 | */ 6 | public abstract class Hen implements Country 7 | { 8 | abstract int getCountOfEggsPerMonth(); 9 | 10 | String getDescription() 11 | { 12 | return "Я курица."; 13 | } 14 | 15 | ; 16 | } 17 | -------------------------------------------------------------------------------- /src/com/javarush/test/level14/lesson06/home01/MoldovanHen.java: -------------------------------------------------------------------------------- 1 | package com.javarush.test.level14.lesson06.home01; 2 | 3 | /** 4 | * Created by Dmitry on 11.09.2015. 5 | */ 6 | public class MoldovanHen extends Hen 7 | { 8 | @Override int getCountOfEggsPerMonth() 9 | { 10 | return 3; 11 | } 12 | 13 | 14 | 15 | String getDescription() 16 | { 17 | return super.getDescription() + " Моя страна - " + MOLDOVA + ". Я несу " + getCountOfEggsPerMonth() + " яиц в месяц."; 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /src/com/javarush/test/level14/lesson06/home01/RussianHen.java: -------------------------------------------------------------------------------- 1 | package com.javarush.test.level14.lesson06.home01; 2 | 3 | /** 4 | * Created by Dmitry on 11.09.2015. 5 | */ 6 | public class RussianHen extends Hen 7 | { 8 | @Override 9 | int getCountOfEggsPerMonth() 10 | { 11 | return 3; 12 | } 13 | 14 | 15 | 16 | String getDescription() 17 | { 18 | return super.getDescription() + " Моя страна - " + RUSSIA + ". Я несу " + getCountOfEggsPerMonth() + " яиц в месяц."; 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /src/com/javarush/test/level14/lesson06/home01/UkrainianHen.java: -------------------------------------------------------------------------------- 1 | package com.javarush.test.level14.lesson06.home01; 2 | 3 | /** 4 | * Created by Dmitry on 11.09.2015. 5 | */ 6 | public class UkrainianHen extends Hen 7 | { 8 | @Override 9 | int getCountOfEggsPerMonth() 10 | { 11 | return 3; 12 | } 13 | 14 | 15 | 16 | String getDescription() 17 | { 18 | return super.getDescription() + " Моя страна - " + UKRAINE + ". Я несу " + getCountOfEggsPerMonth() + " яиц в месяц."; 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /src/com/javarush/test/level14/lesson08/bonus03/Singleton.java: -------------------------------------------------------------------------------- 1 | package com.javarush.test.level14.lesson08.bonus03; 2 | 3 | /** 4 | * Created by Dmitry on 02.12.2015. 5 | */ 6 | public class Singleton 7 | { 8 | 9 | static Singleton INSTANCE = null; 10 | private Singleton() {} 11 | 12 | static Singleton getInstance() { 13 | if (INSTANCE==null) { 14 | INSTANCE = new Singleton(); 15 | } 16 | return INSTANCE; 17 | } 18 | 19 | } 20 | -------------------------------------------------------------------------------- /src/com/javarush/test/level14/lesson08/bonus03/Solution.java: -------------------------------------------------------------------------------- 1 | package com.javarush.test.level14.lesson08.bonus03; 2 | 3 | /* Singleton 4 | Класс является синглтоном (реализует паттерн(шаблон) Singleton), если позволяет создать всего один объект своего типа. 5 | 6 | Реализовать Singleton pattern: 7 | 1. Создай класс Singleton в отдельном файле. 8 | 2. Добавь в него статический метод getInstance(). 9 | 3. Метод getInstance должен возвращать один и тот же объект класса Singleton при любом вызове метода getInstance. 10 | 4. Подумай, каким образом можно запретить создание других объектов этого класса. 11 | 5. Сделай все конструкторы в классе Singleton приватными (private). 12 | 13 | 6. В итоге должна быть возможность создать объект (экземпляр класса) ТОЛЬКО используя метод getInstance. 14 | */ 15 | public class Solution 16 | { 17 | public static void main(String[] args) 18 | { 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /src/com/javarush/test/level14/lesson08/home01/Bridge.java: -------------------------------------------------------------------------------- 1 | package com.javarush.test.level14.lesson08.home01; 2 | 3 | /** 4 | * Created by Dmitry on 11.09.2015. 5 | */ 6 | public interface Bridge 7 | { 8 | int getCarsCount(); 9 | } 10 | -------------------------------------------------------------------------------- /src/com/javarush/test/level14/lesson08/home01/SuspensionBridge.java: -------------------------------------------------------------------------------- 1 | package com.javarush.test.level14.lesson08.home01; 2 | 3 | /** 4 | * Created by Dmitry on 11.09.2015. 5 | */ 6 | public class SuspensionBridge implements Bridge 7 | { 8 | @Override 9 | public int getCarsCount() 10 | { 11 | return 21; 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /src/com/javarush/test/level14/lesson08/home01/WaterBridge.java: -------------------------------------------------------------------------------- 1 | package com.javarush.test.level14.lesson08.home01; 2 | 3 | /** 4 | * Created by Dmitry on 11.09.2015. 5 | */ 6 | public class WaterBridge implements Bridge 7 | { 8 | @Override 9 | public int getCarsCount() 10 | { 11 | return 34; 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /src/com/javarush/test/level14/lesson08/home02/BubblyWine.java: -------------------------------------------------------------------------------- 1 | package com.javarush.test.level14.lesson08.home02; 2 | 3 | /** 4 | * Created by Dmitry on 13.09.2015. 5 | */ 6 | public class BubblyWine extends Wine 7 | { 8 | public String getHolidayName(){ 9 | return "Новый год"; 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /src/com/javarush/test/level14/lesson08/home02/Drink.java: -------------------------------------------------------------------------------- 1 | package com.javarush.test.level14.lesson08.home02; 2 | 3 | /** 4 | * Created by Dmitry on 13.09.2015. 5 | */ 6 | public abstract class Drink 7 | { 8 | public void taste(){ 9 | System.out.println("Вкусно"); 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /src/com/javarush/test/level14/lesson08/home02/Wine.java: -------------------------------------------------------------------------------- 1 | package com.javarush.test.level14.lesson08.home02; 2 | 3 | /** 4 | * Created by Dmitry on 13.09.2015. 5 | */ 6 | public class Wine extends Drink 7 | { 8 | public String getHolidayName(){ 9 | return "День рождения"; 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /src/com/javarush/test/level14/lesson08/home03/Person.java: -------------------------------------------------------------------------------- 1 | package com.javarush.test.level14.lesson08.home03; 2 | 3 | public interface Person 4 | { 5 | public static class User implements Person 6 | { 7 | void live() 8 | { 9 | System.out.println("Usually I just live"); 10 | } 11 | } 12 | 13 | public static class Looser implements Person 14 | { 15 | void doNothing() 16 | { 17 | System.out.println("Usually I do nothing"); 18 | } 19 | } 20 | 21 | public static class Coder implements Person 22 | { 23 | void coding() 24 | { 25 | System.out.println("Usually I create code"); 26 | } 27 | } 28 | 29 | public static class Proger implements Person 30 | { 31 | void enjoy() 32 | { 33 | System.out.println("Wonderful life!"); 34 | } 35 | } 36 | 37 | } 38 | -------------------------------------------------------------------------------- /src/com/javarush/test/level14/lesson08/home05/CompItem.java: -------------------------------------------------------------------------------- 1 | package com.javarush.test.level14.lesson08.home05; 2 | 3 | /** 4 | * Created by Dmitry on 13.09.2015. 5 | */ 6 | public interface CompItem 7 | { 8 | String getName(); 9 | } 10 | -------------------------------------------------------------------------------- /src/com/javarush/test/level14/lesson08/home05/Computer.java: -------------------------------------------------------------------------------- 1 | package com.javarush.test.level14.lesson08.home05; 2 | 3 | /** 4 | * Created by Dmitry on 13.09.2015. 5 | */ 6 | public class Computer 7 | { 8 | private Keyboard keyboard; 9 | private Monitor monitor; 10 | 11 | 12 | public Computer() 13 | { 14 | keyboard = new Keyboard(); 15 | monitor = new Monitor(); 16 | 17 | } 18 | 19 | public Keyboard getKeyboard() 20 | { 21 | return keyboard; 22 | } 23 | 24 | 25 | 26 | public Monitor getMonitor() 27 | { 28 | return monitor; 29 | } 30 | } 31 | -------------------------------------------------------------------------------- /src/com/javarush/test/level14/lesson08/home05/Keyboard.java: -------------------------------------------------------------------------------- 1 | package com.javarush.test.level14.lesson08.home05; 2 | 3 | /** 4 | * Created by Dmitry on 13.09.2015. 5 | */ 6 | public class Keyboard implements CompItem 7 | { 8 | @Override 9 | public String getName() 10 | { 11 | return "Keyboard"; 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /src/com/javarush/test/level14/lesson08/home05/Monitor.java: -------------------------------------------------------------------------------- 1 | package com.javarush.test.level14.lesson08.home05; 2 | 3 | /** 4 | * Created by Dmitry on 13.09.2015. 5 | */ 6 | public class Monitor implements CompItem 7 | { 8 | @Override 9 | public String getName() 10 | { 11 | return "Monitor"; 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /src/com/javarush/test/level14/lesson08/home05/Mouse.java: -------------------------------------------------------------------------------- 1 | package com.javarush.test.level14.lesson08.home05; 2 | 3 | /** 4 | * Created by Dmitry on 13.09.2015. 5 | */ 6 | /*public class Mouse implements CompItem 7 | { 8 | @Override 9 | public String getName() 10 | { 11 | return "Mouse"; 12 | } 13 | }*/ 14 | -------------------------------------------------------------------------------- /src/com/javarush/test/level14/lesson08/home09/Hrivna.java: -------------------------------------------------------------------------------- 1 | package com.javarush.test.level14.lesson08.home09; 2 | 3 | /** 4 | * Created by Dmitry on 30.11.2015. 5 | */ 6 | public class Hrivna extends Money 7 | { 8 | public Hrivna(double amount) 9 | { 10 | super(amount); 11 | } 12 | 13 | @Override 14 | public double getAmount() 15 | { 16 | 17 | return super.getAmount(); 18 | } 19 | 20 | @Override 21 | public String getCurrencyName() 22 | { 23 | return "HRN"; 24 | } 25 | } 26 | -------------------------------------------------------------------------------- /src/com/javarush/test/level14/lesson08/home09/Money.java: -------------------------------------------------------------------------------- 1 | package com.javarush.test.level14.lesson08.home09; 2 | 3 | public abstract class Money 4 | { 5 | private double amount; 6 | public Money(double amount) 7 | { 8 | this.amount = amount; 9 | } 10 | 11 | public double getAmount(){ 12 | return amount; 13 | }; 14 | 15 | public abstract String getCurrencyName( 16 | 17 | ); 18 | } 19 | 20 | -------------------------------------------------------------------------------- /src/com/javarush/test/level14/lesson08/home09/USD.java: -------------------------------------------------------------------------------- 1 | package com.javarush.test.level14.lesson08.home09; 2 | 3 | /** 4 | * Created by Dmitry on 30.11.2015. 5 | */ 6 | public class USD extends Money 7 | { 8 | public USD(double amount) 9 | { 10 | super(amount); 11 | } 12 | 13 | @Override 14 | public double getAmount() 15 | { 16 | return super.getAmount(); 17 | } 18 | 19 | @Override 20 | public String getCurrencyName() 21 | { 22 | return "USD"; 23 | } 24 | } 25 | -------------------------------------------------------------------------------- /src/com/javarush/test/level15/lesson04/task01/Solution.java: -------------------------------------------------------------------------------- 1 | package com.javarush.test.level15.lesson04.task01; 2 | 3 | /* Что-то лишнее 4 | 1. Программа должна выводить следующее: 5 | Это double 6 | Это Object 7 | Это double 8 | Это Integer 9 | Это double 10 | 11 | 2 Удалите реализации всех лишних методов 12 | */ 13 | 14 | public class Solution { 15 | public static void main(String[] args) { 16 | print((short) 1); 17 | print((Number) 1); 18 | print(1); 19 | print((Integer) 1); 20 | print((int) 1); 21 | } 22 | 23 | public static void print(Integer i) { 24 | System.out.println("Это Integer"); 25 | } 26 | 27 | 28 | 29 | 30 | 31 | public static void print(Object i) { 32 | System.out.println("Это Object"); 33 | } 34 | 35 | public static void print(double i) { 36 | System.out.println("Это double"); 37 | } 38 | 39 | 40 | 41 | 42 | } 43 | -------------------------------------------------------------------------------- /src/com/javarush/test/level15/lesson04/task03/Solution.java: -------------------------------------------------------------------------------- 1 | package com.javarush.test.level15.lesson04.task03; 2 | 3 | /* ООП - Перегрузка - убираем лишнее 4 | 1. Подумайте, какая из реализаций метода print будет вызвана. 5 | 2. Удалите все лишние реализации метода print. 6 | */ 7 | 8 | public class Solution { 9 | public static void main(String[] args) { 10 | print(1); 11 | } 12 | 13 | 14 | 15 | public static void print(long l) { 16 | System.out.println("Я буду Java прогером!"); 17 | } 18 | 19 | 20 | } 21 | -------------------------------------------------------------------------------- /src/com/javarush/test/level15/lesson04/task04/Solution.java: -------------------------------------------------------------------------------- 1 | package com.javarush.test.level15.lesson04.task04; 2 | 3 | /* Мужчина или женщина? 4 | 1. В методе main создать 2 человека man и woman. man с типом Man, woman с типом Woman. 5 | 2. Изменить метод printName так, чтобы он выполнялся для man и woman. 6 | 3. Реализация метода printName должна быть одна. 7 | */ 8 | 9 | public class Solution { 10 | public static void main(String[] args) { 11 | Man man = new Man(); 12 | Woman woman = new Woman(); 13 | 14 | printName(man); 15 | printName(woman); 16 | } 17 | 18 | public static void printName(Human man) { 19 | 20 | } 21 | 22 | public static class Human { 23 | 24 | } 25 | 26 | public static class Man extends Human { 27 | 28 | } 29 | 30 | public static class Woman extends Human { 31 | 32 | } 33 | } 34 | -------------------------------------------------------------------------------- /src/com/javarush/test/level15/lesson04/task05/Solution.java: -------------------------------------------------------------------------------- 1 | package com.javarush.test.level15.lesson04.task05; 2 | 3 | /* Все лишнее - прочь! 4 | Убрать в методе main лишние строки, для которых метод add нереализован. 5 | */ 6 | 7 | public class Solution { 8 | public static void main(String[] args) { 9 | add((short) 1, 2f); 10 | add(1, 2); 11 | add(2d, 2); 12 | 13 | add((byte) 1, 2d); 14 | } 15 | 16 | public static void add(int i, int j) { 17 | System.out.println("Integer addition"); 18 | } 19 | 20 | public static void add(int i, double j) { 21 | System.out.println("Integer and double addition"); 22 | } 23 | 24 | public static void add(double i, double j) { 25 | System.out.println("Double addition"); 26 | } 27 | } 28 | -------------------------------------------------------------------------------- /src/com/javarush/test/level15/lesson06/task03/Solution.java: -------------------------------------------------------------------------------- 1 | package com.javarush.test.level15.lesson06.task03; 2 | 3 | /* Максимально простой код 3 4 | Упрости код: 5 | - убери всё то, что будет генерироваться автоматически при компиляции 6 | - убери все наследования классов, которые и так будут добавлены автоматически при компиляции 7 | - убери все конструкторы, которые создаются и добавляются автоматически. 8 | */ 9 | 10 | public class Solution { 11 | public static void main(String[] args) { 12 | } 13 | 14 | public interface Runnable { 15 | 16 | } 17 | 18 | public class Machine implements Runnable { 19 | 20 | } 21 | 22 | public class Car extends Machine { 23 | 24 | } 25 | } 26 | -------------------------------------------------------------------------------- /src/com/javarush/test/level15/lesson09/task01/Solution.java: -------------------------------------------------------------------------------- 1 | package com.javarush.test.level15.lesson09.task01; 2 | 3 | import java.util.HashMap; 4 | import java.util.Map; 5 | 6 | /* Статики 1 7 | В статическом блоке инициализировать labels 5 различными парами. 8 | */ 9 | 10 | public class Solution { 11 | public static Map labels = new HashMap(); 12 | static { 13 | labels.put((double) 1,"ghb"); 14 | labels.put((double) 5,"gb"); 15 | labels.put(5.2,"ghl;hb"); 16 | labels.put(5.36,"ghk,bnb"); 17 | labels.put(5.3,"ghk,oobnb"); 18 | 19 | } 20 | public static void main(String[] args) { 21 | System.out.println(labels); 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /src/com/javarush/test/level15/lesson09/task05/Solution.java: -------------------------------------------------------------------------------- 1 | package com.javarush.test.level15.lesson09.task05; 2 | 3 | /* Статики 4 4 | Внутри статического блока: 5 | 1. Создайте класс Cat 6 | 2. Внутри Cat создайте поле класса String name = "Пушок" 7 | 3. Создайте объект класса Cat - myCat 8 | 4. Присвойте статическому объекту Object cat объект, созданный в п.3 9 | 5. Выведите в консоль myCat.name 10 | */ 11 | 12 | public class Solution { 13 | public static Object cat; 14 | static { 15 | class Cat{ 16 | String name = " Пушок"; 17 | 18 | } 19 | 20 | 21 | Cat myCAt =new Cat(); 22 | cat = myCAt; 23 | System.out.println(myCAt.name); 24 | } 25 | 26 | } 27 | -------------------------------------------------------------------------------- /src/com/javarush/test/level15/lesson12/bonus01/Flyable.java: -------------------------------------------------------------------------------- 1 | package com.javarush.test.level15.lesson12.bonus01; 2 | 3 | public interface Flyable { 4 | void fly(); 5 | } 6 | -------------------------------------------------------------------------------- /src/com/javarush/test/level15/lesson12/bonus01/Helicopter.java: -------------------------------------------------------------------------------- 1 | package com.javarush.test.level15.lesson12.bonus01; 2 | 3 | /** 4 | * Created by Dmitry on 05.12.2015. 5 | */ 6 | public class Helicopter implements Flyable 7 | { 8 | @Override 9 | public void fly() 10 | { 11 | 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /src/com/javarush/test/level15/lesson12/bonus01/Plane.java: -------------------------------------------------------------------------------- 1 | package com.javarush.test.level15.lesson12.bonus01; 2 | 3 | /** 4 | * Created by Dmitry on 05.12.2015. 5 | */ 6 | public class Plane implements Flyable 7 | { 8 | public Plane(int count) 9 | { 10 | } 11 | 12 | @Override 13 | public void fly() 14 | { 15 | 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /src/com/javarush/test/level15/lesson12/bonus02/DrinkMaker.java: -------------------------------------------------------------------------------- 1 | package com.javarush.test.level15.lesson12.bonus02; 2 | 3 | /** 4 | * Created by Dmitry on 05.12.2015. 5 | */ 6 | public abstract class DrinkMaker 7 | { 8 | abstract void getRightCup(); 9 | abstract void putIngredient(); 10 | abstract void pour(); 11 | 12 | void makeDrink(){ 13 | getRightCup(); 14 | putIngredient(); 15 | pour(); 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /src/com/javarush/test/level15/lesson12/bonus02/LatteMaker.java: -------------------------------------------------------------------------------- 1 | package com.javarush.test.level15.lesson12.bonus02; 2 | 3 | /** 4 | * Created by Dmitry on 05.12.2015. 5 | */ 6 | public class LatteMaker extends DrinkMaker 7 | { 8 | @Override 9 | public void getRightCup() 10 | { 11 | System.out.println("Берем чашку для латте"); 12 | } 13 | 14 | @Override 15 | public void putIngredient() 16 | { 17 | System.out.println("Делаем кофе"); 18 | } 19 | 20 | @Override 21 | public void pour() 22 | { 23 | System.out.println("Заливаем молоком с пенкой"); 24 | } 25 | } 26 | -------------------------------------------------------------------------------- /src/com/javarush/test/level15/lesson12/bonus02/TeaMaker.java: -------------------------------------------------------------------------------- 1 | package com.javarush.test.level15.lesson12.bonus02; 2 | 3 | /** 4 | * Created by Dmitry on 05.12.2015. 5 | */ 6 | public class TeaMaker extends DrinkMaker 7 | { 8 | @Override 9 | public void getRightCup() 10 | { 11 | System.out.println("Берем чашку для чая"); 12 | } 13 | 14 | @Override 15 | public void putIngredient() 16 | { 17 | System.out.println("Насыпаем чай"); 18 | } 19 | 20 | @Override 21 | public void pour() 22 | { 23 | System.out.println("Заливаем водой"); 24 | } 25 | } 26 | -------------------------------------------------------------------------------- /src/com/javarush/test/level15/lesson12/home03/Tree.java: -------------------------------------------------------------------------------- 1 | package com.javarush.test.level15.lesson12.home03; 2 | 3 | public class Tree { 4 | public static int globalNumber; 5 | public int number; 6 | 7 | public Tree() { 8 | this.number = ++globalNumber; 9 | } 10 | 11 | public void info(Object s) { 12 | System.out.println(String.format("Дерево № %d , метод Object, параметр %s", number, s.getClass().getSimpleName())); 13 | } 14 | public void info(Number s) { 15 | System.out.println(String.format("Дерево № %d , метод Number, параметр %s", number, s.getClass().getSimpleName())); 16 | } 17 | public void info(String s) { 18 | System.out.println(String.format("Дерево № %d , метод String, параметр %s", number, s.getClass().getSimpleName())); 19 | } 20 | 21 | } 22 | -------------------------------------------------------------------------------- /src/com/javarush/test/level15/lesson12/home04/Earth.java: -------------------------------------------------------------------------------- 1 | package com.javarush.test.level15.lesson12.home04; 2 | 3 | /** 4 | * Created by Dmitry on 03.12.2015. 5 | */ 6 | public class Earth implements Planet 7 | { 8 | private static Earth instance; 9 | 10 | private Earth(){} 11 | 12 | public static Earth getInstance(){ 13 | if(instance == null){ 14 | instance = new Earth(); 15 | } 16 | return instance; 17 | } 18 | 19 | } -------------------------------------------------------------------------------- /src/com/javarush/test/level15/lesson12/home04/Moon.java: -------------------------------------------------------------------------------- 1 | package com.javarush.test.level15.lesson12.home04; 2 | 3 | /** 4 | * Created by Dmitry on 03.12.2015. 5 | */ 6 | public class Moon implements Planet 7 | { 8 | private static Moon instance; 9 | 10 | private Moon(){} 11 | 12 | public static Moon getInstance(){ 13 | if(instance == null){ 14 | instance = new Moon(); 15 | } 16 | return instance; 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /src/com/javarush/test/level15/lesson12/home04/Planet.java: -------------------------------------------------------------------------------- 1 | package com.javarush.test.level15.lesson12.home04; 2 | 3 | public interface Planet { 4 | static String SUN = "sun"; 5 | static String MOON = "moon"; 6 | static String EARTH = "earth"; 7 | } 8 | -------------------------------------------------------------------------------- /src/com/javarush/test/level15/lesson12/home04/Sun.java: -------------------------------------------------------------------------------- 1 | package com.javarush.test.level15.lesson12.home04; 2 | 3 | /** 4 | * Created by Dmitry on 03.12.2015. 5 | */ 6 | public class Sun implements Planet 7 | { 8 | private static Sun instance; 9 | 10 | private Sun(){} 11 | 12 | public static Sun getInstance(){ 13 | if(instance == null){ 14 | instance = new Sun(); 15 | } 16 | return instance; 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /src/com/javarush/test/level15/lesson12/home07/Constants.java: -------------------------------------------------------------------------------- 1 | package com.javarush.test.level15.lesson12.home07; 2 | 3 | public class Constants { 4 | public static String FILE_NAME = "C:\\Users\\Dmitry\\Documents\\test.txt" /* add your path to source file here*/; 5 | } 6 | -------------------------------------------------------------------------------- /src/com/javarush/test/level16/lesson03/task01/Solution.java: -------------------------------------------------------------------------------- 1 | package com.javarush.test.level16.lesson03.task01; 2 | 3 | /* My first thread 4 | Создать public static class TestThread - нить с помощью интерфейса Runnable. 5 | TestThread должен выводить в консоль "My first thread". 6 | */ 7 | public class Solution { 8 | public static void main(String[] args) { 9 | TestThread task = new TestThread(); 10 | new Thread(task).start(); 11 | } 12 | public static class TestThread implements Runnable{ 13 | 14 | @Override 15 | public void run() 16 | { 17 | System.out.println("My first thread"); 18 | } 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /src/com/javarush/test/level16/lesson03/task02/Solution.java: -------------------------------------------------------------------------------- 1 | package com.javarush.test.level16.lesson03.task02; 2 | 3 | /* My second thread 4 | 1. Создать public static класс TestThread унаследовавшись от класса Thread. 5 | 2. Создать статик блок внутри TestThread, который выводит в консоль "it's static block inside TestThread". 6 | 3. Метод run должен выводить в консоль "it's run method". 7 | */ 8 | 9 | public class Solution { 10 | public static void main(String[] args) { 11 | TestThread thread = new TestThread(); 12 | thread.start(); 13 | } 14 | public static class TestThread extends Thread{ 15 | static { 16 | System.out.println("it's static block inside TestThread"); 17 | 18 | } 19 | public void run() 20 | { 21 | System.out.println("it's run method"); 22 | } 23 | } 24 | } 25 | -------------------------------------------------------------------------------- /src/com/javarush/test/level16/lesson10/task03/Solution.java: -------------------------------------------------------------------------------- 1 | package com.javarush.test.level16.lesson10.task03; 2 | 3 | /* Снова interrupt 4 | Создай нить TestThread. 5 | В методе main создай экземпляр нити, запусти, а потом прерви ее используя метод interrupt(). 6 | */ 7 | 8 | public class Solution { 9 | public static void main(String[] args) throws InterruptedException { 10 | //Add your code here - добавь код тут 11 | TestThread t = new TestThread(); 12 | t.start(); 13 | t.interrupt(); 14 | } 15 | 16 | //Add your code below - добавь код ниже 17 | public static class TestThread extends Thread{ 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /src/com/javarush/test/level16/lesson13/bonus01/ImageReaderFactory.java: -------------------------------------------------------------------------------- 1 | package com.javarush.test.level16.lesson13.bonus01; 2 | 3 | import com.javarush.test.level16.lesson13.bonus01.common.*; 4 | 5 | /** 6 | * Created by Dmitry on 08.12.2015. 7 | */ 8 | public class ImageReaderFactory 9 | { 10 | public static ImageReader getReader(ImageTypes types){ 11 | ImageReader reader; 12 | if(types == ImageTypes.BMP){ 13 | reader= new BmpReader(); 14 | } else if (types == ImageTypes.JPG){ 15 | reader = new JpgReader(); 16 | } else if (types == ImageTypes.PNG){ 17 | reader = new PngReader(); 18 | }else {throw new IllegalArgumentException("Неизвестный тип картинки");} 19 | return reader; 20 | 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /src/com/javarush/test/level16/lesson13/bonus01/common/BmpReader.java: -------------------------------------------------------------------------------- 1 | package com.javarush.test.level16.lesson13.bonus01.common; 2 | 3 | /** 4 | * Created by Dmitry on 08.12.2015. 5 | */ 6 | public class BmpReader implements ImageReader 7 | { 8 | } 9 | -------------------------------------------------------------------------------- /src/com/javarush/test/level16/lesson13/bonus01/common/ImageReader.java: -------------------------------------------------------------------------------- 1 | package com.javarush.test.level16.lesson13.bonus01.common; 2 | 3 | public interface ImageReader { 4 | } 5 | -------------------------------------------------------------------------------- /src/com/javarush/test/level16/lesson13/bonus01/common/ImageTypes.java: -------------------------------------------------------------------------------- 1 | package com.javarush.test.level16.lesson13.bonus01.common; 2 | 3 | public enum ImageTypes { 4 | BMP, 5 | JPG, 6 | PNG; 7 | } 8 | -------------------------------------------------------------------------------- /src/com/javarush/test/level16/lesson13/bonus01/common/JpgReader.java: -------------------------------------------------------------------------------- 1 | package com.javarush.test.level16.lesson13.bonus01.common; 2 | 3 | /** 4 | * Created by Dmitry on 08.12.2015. 5 | */ 6 | public class JpgReader implements ImageReader 7 | { 8 | } 9 | -------------------------------------------------------------------------------- /src/com/javarush/test/level16/lesson13/bonus01/common/PngReader.java: -------------------------------------------------------------------------------- 1 | package com.javarush.test.level16.lesson13.bonus01.common; 2 | 3 | /** 4 | * Created by Dmitry on 08.12.2015. 5 | */ 6 | public class PngReader implements ImageReader 7 | { 8 | } 9 | -------------------------------------------------------------------------------- /src/com/javarush/test/level16/lesson13/bonus02/Message.java: -------------------------------------------------------------------------------- 1 | package com.javarush.test.level16.lesson13.bonus02; 2 | 3 | public interface Message { 4 | void showWarning(); 5 | } 6 | -------------------------------------------------------------------------------- /src/com/javarush/test/level17/lesson04/task04/Solution.java: -------------------------------------------------------------------------------- 1 | package com.javarush.test.level17.lesson04.task04; 2 | 3 | /* Синхронизированный президент 4 | И снова Singleton паттерн - синхронизация в статическом блоке 5 | Внутри класса OurPresident в статическом блоке создайте синхронизированный блок. 6 | Внутри синхронизированного блока инициализируйте president. 7 | */ 8 | 9 | public class Solution { 10 | public static class OurPresident { 11 | 12 | private static OurPresident president; 13 | 14 | private OurPresident() { 15 | } 16 | 17 | public static OurPresident getOurPresident() { 18 | return president; 19 | } 20 | static { 21 | synchronized (Solution.class){ 22 | president = new OurPresident(); 23 | 24 | } 25 | } 26 | } 27 | } 28 | -------------------------------------------------------------------------------- /src/com/javarush/test/level17/lesson04/task05/Solution.java: -------------------------------------------------------------------------------- 1 | package com.javarush.test.level17.lesson04.task05; 2 | 3 | /* МВФ 4 | Singleton паттерн - синхронизация в методе 5 | IMF - это Международный Валютный Фонд 6 | Внутри метода getFund создайте синхронизированный блок 7 | Внутри синхронизированного блока инициализируйте переменную imf так, чтобы метод getFund всегда возвращал один и тот же объект 8 | */ 9 | 10 | public class Solution { 11 | public static class IMF { 12 | 13 | private static IMF imf; 14 | 15 | public static IMF getFund() { 16 | synchronized (IMF.class){ 17 | imf = new IMF(); 18 | } 19 | //add your code here - добавь код тут 20 | return imf; 21 | } 22 | 23 | private IMF() { 24 | } 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /src/com/javarush/test/level17/lesson10/bonus01/Sex.java: -------------------------------------------------------------------------------- 1 | package com.javarush.test.level17.lesson10.bonus01; 2 | 3 | public enum Sex { 4 | MALE, 5 | FEMALE 6 | } 7 | -------------------------------------------------------------------------------- /src/com/javarush/test/level17/lesson10/bonus02/Sex.java: -------------------------------------------------------------------------------- 1 | package com.javarush.test.level17.lesson10.bonus02; 2 | 3 | public enum Sex { 4 | MALE, 5 | FEMALE 6 | } 7 | -------------------------------------------------------------------------------- /src/com/javarush/test/level17/lesson10/bonus03/Dishes.java: -------------------------------------------------------------------------------- 1 | package com.javarush.test.level17.lesson10.bonus03; 2 | 3 | public class Dishes { 4 | private byte tableNumber; 5 | 6 | public Dishes(byte tableNumber) { 7 | this.tableNumber = tableNumber; 8 | } 9 | 10 | public byte getTableNumber() { 11 | return tableNumber; 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /src/com/javarush/test/level17/lesson10/bonus03/Order.java: -------------------------------------------------------------------------------- 1 | package com.javarush.test.level17.lesson10.bonus03; 2 | 3 | public class Order { 4 | private long time; 5 | private byte tableNumber; 6 | 7 | public Order(byte tableNumber) { 8 | time = (long) (Math.random() * 200); 9 | this.tableNumber = tableNumber; 10 | } 11 | 12 | public long getTime() { 13 | return time; 14 | } 15 | 16 | public byte getTableNumber() { 17 | return tableNumber; 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /src/com/javarush/test/level17/lesson10/bonus03/Table.java: -------------------------------------------------------------------------------- 1 | package com.javarush.test.level17.lesson10.bonus03; 2 | 3 | public class Table { 4 | private static byte tableNumber; 5 | private byte number = ++tableNumber; 6 | 7 | public Order getOrder () { 8 | return new Order(number); 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /src/com/javarush/test/level17/lesson10/home03/Drug.java: -------------------------------------------------------------------------------- 1 | package com.javarush.test.level17.lesson10.home03; 2 | 3 | public class Drug { 4 | private String name; 5 | private String description; 6 | 7 | public String getName() { 8 | return name; 9 | } 10 | 11 | public void setName(String name) { 12 | this.name = name; 13 | } 14 | 15 | public String getDescription() { 16 | return description; 17 | } 18 | 19 | public void setDescription(String description) { 20 | this.description = description; 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /src/com/javarush/test/level17/lesson10/home07/Bean.java: -------------------------------------------------------------------------------- 1 | package com.javarush.test.level17.lesson10.home07; 2 | 3 | public interface Bean { //это интерфейс-маркер 4 | } 5 | -------------------------------------------------------------------------------- /src/com/javarush/test/level17/lesson10/home08/NotEnoughMoneyException.java: -------------------------------------------------------------------------------- 1 | package com.javarush.test.level17.lesson10.home08; 2 | 3 | public class NotEnoughMoneyException extends Exception { 4 | } 5 | -------------------------------------------------------------------------------- /src/com/javarush/test/level17/lesson10/home09/CorruptedDataException.java: -------------------------------------------------------------------------------- 1 | package com.javarush.test.level17.lesson10.home09; 2 | 3 | import java.io.IOException; 4 | 5 | public class CorruptedDataException extends IOException { 6 | } 7 | -------------------------------------------------------------------------------- /src/com/javarush/test/level18/lesson08/task02/AmigoOutputStream.java: -------------------------------------------------------------------------------- 1 | package com.javarush.test.level18.lesson08.task02; 2 | 3 | import java.io.IOException; 4 | import java.sql.Wrapper; 5 | 6 | public interface AmigoOutputStream extends Wrapper 7 | { 8 | public void flush() throws IOException; 9 | 10 | void write(int b) throws IOException; 11 | 12 | void write(byte[] b) throws IOException; 13 | 14 | void write(byte[] b, int off, int len) throws IOException; 15 | 16 | void close() throws IOException; 17 | } 18 | -------------------------------------------------------------------------------- /src/com/javarush/test/level18/lesson08/task04/TxtInputStream.java: -------------------------------------------------------------------------------- 1 | package com.javarush.test.level18.lesson08.task04; 2 | 3 | import java.io.FileInputStream; 4 | import java.io.FileNotFoundException; 5 | 6 | /* UnsupportedFileName 7 | Измените класс TxtInputStream так, чтобы он работал только с txt-файлами (*.txt) 8 | Например, first.txt или name.1.part3.txt 9 | Если передан не txt-файл, например, file.txt.exe, то конструктор должен выбрасывать исключение UnsupportedFileNameException 10 | */ 11 | 12 | public class TxtInputStream extends FileInputStream { 13 | public TxtInputStream(String fileName) throws FileNotFoundException, UnsupportedFileNameException{ 14 | super(fileName); 15 | if(!fileName.endsWith(".txt")){ 16 | throw new UnsupportedFileNameException(); 17 | } 18 | 19 | 20 | } 21 | 22 | } 23 | 24 | -------------------------------------------------------------------------------- /src/com/javarush/test/level18/lesson08/task04/UnsupportedFileNameException.java: -------------------------------------------------------------------------------- 1 | package com.javarush.test.level18.lesson08.task04; 2 | 3 | public class UnsupportedFileNameException extends Exception { 4 | } 5 | -------------------------------------------------------------------------------- /src/com/javarush/test/level18/lesson10/bonus02/file.txt: -------------------------------------------------------------------------------- 1 | 19846 Шорты пляжные синие 159.00 12 2 | 198478 Шорты пляжные черные с рисунко173.00 17 3 | 19847983Куртка для сноубордистов, разм10173.9912 -------------------------------------------------------------------------------- /src/com/javarush/test/level18/lesson10/bonus03/file.txt: -------------------------------------------------------------------------------- 1 | 19846 Шорты пляжные 159.00 12 2 | 198478 Шорты пляжные черные с рисунко173.00 17 3 | 19847983Куртка для сноубордистов, разм10173.9912 4 | -------------------------------------------------------------------------------- /src/com/javarush/test/level19/lesson03/task02/AdapterFileOutputStream.java: -------------------------------------------------------------------------------- 1 | package com.javarush.test.level19.lesson03.task02; 2 | 3 | /* Адаптер 4 | Используйте класс AdapterFileOutputStream, чтобы адаптировать FileOutputStream к новому интерфейсу AmigoStringWriter 5 | */ 6 | 7 | import java.io.FileOutputStream; 8 | import java.io.IOException; 9 | 10 | public class AdapterFileOutputStream implements AmigoStringWriter{ 11 | FileOutputStream out; 12 | AdapterFileOutputStream(FileOutputStream out){ 13 | this.out = out; 14 | } 15 | @Override 16 | public void flush() throws IOException 17 | { 18 | out.flush(); 19 | } 20 | 21 | @Override 22 | public void writeString(String s) throws IOException 23 | { 24 | out.write(s.getBytes()); 25 | } 26 | 27 | @Override 28 | public void close() throws IOException 29 | { 30 | out.close(); 31 | } 32 | } 33 | 34 | -------------------------------------------------------------------------------- /src/com/javarush/test/level19/lesson03/task02/AmigoStringWriter.java: -------------------------------------------------------------------------------- 1 | package com.javarush.test.level19.lesson03.task02; 2 | 3 | import java.io.IOException; 4 | 5 | public interface AmigoStringWriter { 6 | public void flush() throws IOException; 7 | 8 | void writeString(String s) throws IOException; 9 | 10 | void close() throws IOException; 11 | } 12 | -------------------------------------------------------------------------------- /src/com/javarush/test/level19/lesson03/task04/Person.java: -------------------------------------------------------------------------------- 1 | package com.javarush.test.level19.lesson03.task04; 2 | 3 | import java.util.Date; 4 | 5 | public class Person { 6 | private String firstName; 7 | private String middleName; 8 | private String lastName; 9 | private Date birthDate; 10 | 11 | public Person(String firstName, String middleName, String lastName, Date birthDate) { 12 | this.firstName = firstName; 13 | this.middleName = middleName; 14 | this.lastName = lastName; 15 | this.birthDate = birthDate; 16 | } 17 | 18 | @Override 19 | public String toString() { 20 | return String.format("%s %s %s %s", lastName, firstName, middleName, birthDate.toString()); 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /src/com/javarush/test/level19/lesson03/task04/PersonScanner.java: -------------------------------------------------------------------------------- 1 | package com.javarush.test.level19.lesson03.task04; 2 | 3 | import java.io.IOException; 4 | 5 | public interface PersonScanner { 6 | Person read() throws IOException; 7 | 8 | void close() throws IOException; 9 | } 10 | -------------------------------------------------------------------------------- /src/com/javarush/test/level19/lesson10/home03/Person.java: -------------------------------------------------------------------------------- 1 | package com.javarush.test.level19.lesson10.home03; 2 | 3 | import java.util.Date; 4 | 5 | public class Person { 6 | private String name; 7 | private Date birthday; 8 | 9 | public Person(String name, Date birthday) { 10 | this.name = name; 11 | this.birthday = birthday; 12 | } 13 | 14 | public String getName() { 15 | return name; 16 | } 17 | 18 | public Date getBirthday() { 19 | return birthday; 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /src/com/javarush/test/level20/lesson02/task01/Asset.java: -------------------------------------------------------------------------------- 1 | package com.javarush.test.level20.lesson02.task01; 2 | 3 | public class Asset { 4 | public Asset(String name) { 5 | this.name = name; 6 | } 7 | 8 | private String name; 9 | private double price; 10 | 11 | public String getName() { 12 | return name; 13 | } 14 | 15 | public double getPrice() { 16 | return price; 17 | } 18 | 19 | public void setPrice(double price) { 20 | this.price = price; 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /src/com/javarush/test/level20/lesson04/task01/Asset.java: -------------------------------------------------------------------------------- 1 | package com.javarush.test.level20.lesson04.task01; 2 | 3 | import java.io.Serializable; 4 | 5 | public class Asset implements Serializable 6 | { 7 | public Asset(String name) { 8 | this.name = name; 9 | } 10 | 11 | private String name; 12 | private double price; 13 | 14 | public String getName() { 15 | return name; 16 | } 17 | 18 | public double getPrice() { 19 | return price; 20 | } 21 | 22 | public void setPrice(double price) { 23 | this.price = price; 24 | } 25 | } 26 | -------------------------------------------------------------------------------- /src/com/javarush/test/level20/lesson04/task01/Solution.java: -------------------------------------------------------------------------------- 1 | package com.javarush.test.level20.lesson04.task01; 2 | 3 | import java.io.Serializable; 4 | import java.util.ArrayList; 5 | import java.util.Arrays; 6 | import java.util.List; 7 | 8 | /* Как сериализовать? 9 | Сделайте так, чтобы сериализация класса Human была возможной 10 | */ 11 | public class Solution { 12 | public static class Human implements Serializable { 13 | public String name; 14 | public List assets = new ArrayList<>(); 15 | 16 | public Human() { 17 | } 18 | 19 | public Human(String name, Asset... assets) { 20 | this.name = name; 21 | if (assets != null) { 22 | this.assets.addAll(Arrays.asList(assets)); 23 | } 24 | } 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /src/com/javarush/test/level20/lesson04/task02/Solution.java: -------------------------------------------------------------------------------- 1 | package com.javarush.test.level20.lesson04.task02; 2 | 3 | import java.io.Serializable; 4 | import java.util.ArrayList; 5 | import java.util.List; 6 | 7 | /* Как сериализовать JavaRush? 8 | Сделайте так, чтобы сериализация класса JavaRush была возможной 9 | */ 10 | public class Solution { 11 | public static class JavaRush implements Serializable{ 12 | public List users = new ArrayList<>(); 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /src/com/javarush/test/level20/lesson04/task04/Solution.java: -------------------------------------------------------------------------------- 1 | package com.javarush.test.level20.lesson04.task04; 2 | 3 | import java.io.Serializable; 4 | 5 | /* Как сериализовать static? 6 | Сделайте так, чтобы сериализация класса ClassWithStatic была возможной 7 | */ 8 | public class Solution { 9 | public static class ClassWithStatic implements Serializable{ 10 | public static String staticString = "it's test static string"; 11 | public int i; 12 | public int j; 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /src/com/javarush/test/level20/lesson04/task05/Solution.java: -------------------------------------------------------------------------------- 1 | package com.javarush.test.level20.lesson04.task05; 2 | 3 | import java.io.Serializable; 4 | 5 | /* Как сериализовать что-то свое? 6 | Сделайте так, чтобы сериализация класса Object была возможной 7 | */ 8 | public class Solution { 9 | public static class Object implements Serializable{ 10 | public String string1; 11 | public String string2; 12 | } 13 | 14 | public static int countStrings; 15 | 16 | public static class String implements Serializable{ 17 | private final int number; 18 | 19 | public String() { 20 | number = ++countStrings; 21 | } 22 | 23 | public void print() { 24 | System.out.println("string #" + number); 25 | } 26 | } 27 | } 28 | -------------------------------------------------------------------------------- /src/com/javarush/test/level20/lesson10/home06/Solution.java: -------------------------------------------------------------------------------- 1 | package com.javarush.test.level20.lesson10.home06; 2 | 3 | import java.io.*; 4 | 5 | /* Запрет сериализации 6 | Запретите сериализацию класса SubSolution используя NotSerializableException. 7 | Сигнатуры классов менять нельзя 8 | */ 9 | public class Solution implements Serializable { 10 | public static class SubSolution extends Solution { 11 | 12 | private void writeObject(ObjectOutputStream out) throws IOException { 13 | throw new NotSerializableException(); 14 | } 15 | private void readObject(ObjectInputStream in) throws IOException, ClassNotFoundException { 16 | throw new NotSerializableException(); 17 | } 18 | 19 | 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /src/com/javarush/test/level20/lesson10/home09/Solution.java: -------------------------------------------------------------------------------- 1 | package com.javarush.test.level20.lesson10.home09; 2 | 3 | import java.io.Serializable; 4 | import java.util.LinkedList; 5 | import java.util.List; 6 | 7 | /* Знакомство с графами 8 | Прочитать в дополнительных материалах о сериализации графов. 9 | Дан ориентированный плоский граф Solution, содержащий циклы и петли. 10 | Пример, http://edu.nstu.ru/courses/saod/images/graph1.gif 11 | Сериализовать Solution. 12 | Все данные должны сохранить порядок следования. 13 | */ 14 | public class Solution implements Serializable{ 15 | int node; 16 | List edges = new LinkedList<>(); 17 | } 18 | -------------------------------------------------------------------------------- /src/com/javarush/test/level21/lesson02/task03/Solution.java: -------------------------------------------------------------------------------- 1 | package com.javarush.test.level21.lesson02.task03; 2 | 3 | /* Все гениальное - просто! 4 | Упростить. Переменные не переименовывать, комментарии не оставлять. 5 | */ 6 | public class Solution { 7 | public static boolean calculate(boolean a, boolean b, boolean c, boolean d) { 8 | return c; 9 | } 10 | 11 | } 12 | -------------------------------------------------------------------------------- /src/com/javarush/test/level22/lesson05/home01/Task.java: -------------------------------------------------------------------------------- 1 | package com.javarush.test.level22.lesson05.home01; 2 | 3 | public class Task implements Runnable { 4 | private String initialString; 5 | private Solution solution; 6 | 7 | public Task(Solution solution, String initialString) { 8 | this.solution = solution; 9 | this.initialString = initialString; 10 | } 11 | 12 | @Override 13 | public void run() { 14 | String name = Thread.currentThread().getName(); 15 | String str = this.initialString; 16 | do { 17 | System.out.println(name + str); 18 | } while ((str = solution.getPartOfString(str, name)) != null || !str.isEmpty()); 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /src/com/javarush/test/level22/lesson05/home01/TooShortStringFirstThreadException.java: -------------------------------------------------------------------------------- 1 | package com.javarush.test.level22.lesson05.home01; 2 | 3 | public class TooShortStringFirstThreadException extends RuntimeException { 4 | public TooShortStringFirstThreadException(StringIndexOutOfBoundsException e) 5 | { 6 | 7 | } 8 | } 9 | -------------------------------------------------------------------------------- /src/com/javarush/test/level22/lesson05/home01/TooShortStringSecondThreadException.java: -------------------------------------------------------------------------------- 1 | package com.javarush.test.level22.lesson05.home01; 2 | 3 | public class TooShortStringSecondThreadException extends RuntimeException { 4 | public TooShortStringSecondThreadException(StringIndexOutOfBoundsException e) 5 | { 6 | 7 | } 8 | } 9 | -------------------------------------------------------------------------------- /src/com/javarush/test/level22/lesson07/task01/Solution.java: -------------------------------------------------------------------------------- 1 | package com.javarush.test.level22.lesson07.task01; 2 | 3 | /* Форматирование строки 4 | Исправить метод getFormattedString так, чтобы он возвращал строку с параметрами для форматирования. 5 | Для перевода каретки не используйте \n. 6 | Должен быть вывод: 7 | 20 / 7 = 2,86 8 | Exp = 3,33e+00 9 | */ 10 | public class Solution { 11 | public static void main(String[] args) { 12 | System.out.println(String.format(getFormattedString(), 20.0 / 7.0, 10.0 / 3.0)); 13 | //должен быть вывод 14 | //20 / 7 = 2,86 15 | //Exp = 3,33e+00 16 | } 17 | 18 | public static String getFormattedString() { 19 | String eol = System.getProperty("line.separator"); 20 | return "20 / 7 = %.2f" +eol+ "Exp = %.2e"; 21 | 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /src/com/javarush/test/level22/lesson07/task02/Solution.java: -------------------------------------------------------------------------------- 1 | package com.javarush.test.level22.lesson07.task02; 2 | 3 | /* МНЕ нравится курс JavaRush 4 | Исправить метод getFormattedString так, чтобы он возвращал строку с параметрами для форматирования. 5 | Параметры должны меняться местами. 6 | Должен быть вывод: 7 | МНЕ нравится курс JavaRush 8 | */ 9 | public class Solution { 10 | public static void main(String[] args) { 11 | System.out.println(String.format(getFormattedString(), "JavaRush", "курс", "мне", "нравится")); 12 | //должен быть вывод 13 | //"МНЕ нравится курс JavaRush" 14 | } 15 | public static String getFormattedString() { 16 | 17 | return "%3$s".toUpperCase() + " %4$s" + " %2$s" + " %1$s" ; 18 | 19 | 20 | 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /src/com/javarush/test/level22/lesson07/task03/Solution.java: -------------------------------------------------------------------------------- 1 | package com.javarush.test.level22.lesson07.task03; 2 | 3 | import java.util.Date; 4 | 5 | /* Форматирование даты 6 | Исправить метод getFormattedString так, чтобы он возвращал строку с параметрами для форматирования. 7 | Должен быть вывод аналогичный следующему: 8 | 31:10:13 15:59:59 9 | */ 10 | public class Solution { 11 | public static void main(String[] args) { 12 | Date date = new Date(); 13 | System.out.println(String.format(getFormattedString(), date, date, date, date, date, date)); 14 | //должен быть вывод аналогичный следующему 15 | //31:10:13 15:59:59 - dd:MM:yy hh:mm:ss 16 | } 17 | 18 | public static String getFormattedString() { 19 | return "%td" + ":%tm" + ":%ty" + " %tH" + ":%tM" + ":%tS" ; 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /src/com/javarush/test/level23/lesson02/task01/Solution.java: -------------------------------------------------------------------------------- 1 | package com.javarush.test.level23.lesson02.task01; 2 | 3 | /* Запретите наследование 4 | Запретите наследование от класса Listener. 5 | */ 6 | public class Solution { 7 | 8 | public static final class Listener { 9 | public void onMouseDown(int x, int y) { 10 | //do something on mouse down event 11 | } 12 | 13 | public void onMouseUp(int x, int y) { 14 | //do something on mouse up event 15 | } 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /src/com/javarush/test/level23/lesson02/task02/Solution.java: -------------------------------------------------------------------------------- 1 | package com.javarush.test.level23.lesson02.task02; 2 | 3 | /* Запретите переопределение 4 | Запретите переопределение метода onMouseDown. 5 | */ 6 | public class Solution { 7 | 8 | public static class Listener { 9 | public final void onMouseDown(int x, int y) { 10 | //do something on mouse down event 11 | } 12 | 13 | public void onMouseUp(int x, int y) { 14 | //do something on mouse up event 15 | } 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /src/com/javarush/test/level23/lesson02/task03/Solution.java: -------------------------------------------------------------------------------- 1 | package com.javarush.test.level23.lesson02.task03; 2 | 3 | /* Запретите создание экземпляров класса 4 | Запретите создание экземпляров класса Listener. 5 | */ 6 | public class Solution { 7 | 8 | public static abstract class Listener { 9 | public void onMouseDown(int x, int y) { 10 | //do something on mouse down event 11 | } 12 | 13 | public void onMouseUp(int x, int y) { 14 | //do something on mouse up event 15 | } 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /src/com/javarush/test/level23/lesson04/home01/DbMock.java: -------------------------------------------------------------------------------- 1 | package com.javarush.test.level23.lesson04.home01; 2 | 3 | import java.util.ArrayList; 4 | import java.util.List; 5 | import java.util.Map; 6 | 7 | public class DbMock { 8 | private static final List FAKE_TASKS = new ArrayList<>(); 9 | private static final List FAKE_NAMES = new ArrayList<>(); 10 | 11 | public static List getFakeTasks(Map criteria) { 12 | return ViewMock.getFakeTasksCriteria().equals(criteria) ? FAKE_TASKS : null; 13 | } 14 | 15 | public static List getFakeNames(Map criteria) { 16 | return ViewMock.getFakeNamesCriteria().equals(criteria) ? FAKE_NAMES : null; 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /src/com/javarush/test/level23/lesson04/home01/ViewMock.java: -------------------------------------------------------------------------------- 1 | package com.javarush.test.level23.lesson04.home01; 2 | 3 | import java.util.HashMap; 4 | import java.util.Map; 5 | 6 | public class ViewMock { 7 | private static final Map FAKE_TASKS_CRITERIA = new HashMap(); 8 | private static final Map FAKE_NAMES_CRITERIA = new HashMap(); 9 | 10 | public static Map getFakeTasksCriteria() { 11 | return FAKE_TASKS_CRITERIA; 12 | } 13 | 14 | public static Map getFakeNamesCriteria() { 15 | return FAKE_NAMES_CRITERIA; 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /src/com/javarush/test/level23/lesson06/task01/Solution.java: -------------------------------------------------------------------------------- 1 | package com.javarush.test.level23.lesson06.task01; 2 | 3 | /* Как выбрать нужное? 4 | В методе main присвойте объекту Object obj экземпляр класса TEST 5 | Константу TEST и класс TEST менять нельзя. 6 | */ 7 | public class Solution { 8 | public static final String TEST = "test"; 9 | 10 | public static class TEST { 11 | @Override 12 | public String toString() { 13 | return "test class"; 14 | } 15 | } 16 | 17 | static Object obj; 18 | 19 | public static void main(String[] args) { 20 | 21 | obj = new TEST(); 22 | System.out.println(obj); 23 | } 24 | } 25 | -------------------------------------------------------------------------------- /src/com/javarush/test/level23/lesson08/home01/vo/Location.java: -------------------------------------------------------------------------------- 1 | package com.javarush.test.level23.lesson08.home01.vo; 2 | 3 | /** 4 | * Created by Dmitry on 08.02.2016. 5 | */ 6 | public class Location extends NamedItem 7 | { 8 | } 9 | -------------------------------------------------------------------------------- /src/com/javarush/test/level23/lesson08/home01/vo/NamedItem.java: -------------------------------------------------------------------------------- 1 | package com.javarush.test.level23.lesson08.home01.vo; 2 | 3 | public class NamedItem { 4 | private int id; 5 | private String name; 6 | private String description; 7 | 8 | public NamedItem() { 9 | } 10 | 11 | public int getId() { 12 | return id; 13 | } 14 | 15 | public void setId(int id) { 16 | this.id = id; 17 | } 18 | 19 | public String getName() { 20 | return name; 21 | } 22 | 23 | public void setName(String name) { 24 | this.name = name; 25 | } 26 | 27 | public String getDescription() { 28 | return description; 29 | } 30 | 31 | public void setDescription(String description) { 32 | this.description = description; 33 | } 34 | } 35 | -------------------------------------------------------------------------------- /src/com/javarush/test/level23/lesson08/home01/vo/Server.java: -------------------------------------------------------------------------------- 1 | package com.javarush.test.level23.lesson08.home01.vo; 2 | 3 | /** 4 | * Created by Dmitry on 08.02.2016. 5 | */ 6 | public class Server extends NamedItem 7 | { 8 | } 9 | -------------------------------------------------------------------------------- /src/com/javarush/test/level23/lesson08/home01/vo/Subject.java: -------------------------------------------------------------------------------- 1 | package com.javarush.test.level23.lesson08.home01.vo; 2 | 3 | /** 4 | * Created by Dmitry on 08.02.2016. 5 | */ 6 | public class Subject extends NamedItem 7 | { 8 | } 9 | -------------------------------------------------------------------------------- /src/com/javarush/test/level23/lesson08/home01/vo/Subscription.java: -------------------------------------------------------------------------------- 1 | package com.javarush.test.level23.lesson08.home01.vo; 2 | 3 | /** 4 | * Created by Dmitry on 08.02.2016. 5 | */ 6 | public class Subscription extends NamedItem 7 | { 8 | } 9 | -------------------------------------------------------------------------------- /src/com/javarush/test/level23/lesson08/home01/vo/User.java: -------------------------------------------------------------------------------- 1 | package com.javarush.test.level23.lesson08.home01.vo; 2 | 3 | /** 4 | * Created by Dmitry on 08.02.2016. 5 | */ 6 | public class User extends NamedItem 7 | { 8 | } 9 | -------------------------------------------------------------------------------- /src/com/javarush/test/level23/lesson08/task01/Solution.java: -------------------------------------------------------------------------------- 1 | package com.javarush.test.level23.lesson08.task01; 2 | 3 | /* Напряги извилины! 4 | Метод printName должен выводить свое собственное имя, т.е. "sout" 5 | Сделайте минимум изменений. 6 | */ 7 | public class Solution { 8 | private String name; 9 | 10 | Solution(String name) { 11 | this.name = name; 12 | } 13 | 14 | public String getName() { 15 | return name; 16 | } 17 | 18 | private void sout() { 19 | new Solution("sout") { 20 | void printName() { 21 | System.out.println(getName()); 22 | } 23 | }.printName(); 24 | } 25 | 26 | public static void main(String[] args) { 27 | new Solution("main").sout(); 28 | } 29 | } 30 | -------------------------------------------------------------------------------- /src/com/javarush/test/level23/lesson13/big01/Mouse.java: -------------------------------------------------------------------------------- 1 | package com.javarush.test.level23.lesson13.big01; 2 | 3 | public class Mouse 4 | { 5 | private int x; 6 | private int y; 7 | 8 | public Mouse(int x, int y) 9 | { 10 | this.x = x; 11 | this.y = y; 12 | } 13 | 14 | public int getX() 15 | { 16 | return x; 17 | } 18 | 19 | public int getY() 20 | { 21 | return y; 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /src/com/javarush/test/level23/lesson13/big01/SnakeDirection.java: -------------------------------------------------------------------------------- 1 | package com.javarush.test.level23.lesson13.big01; 2 | 3 | 4 | public enum SnakeDirection 5 | { 6 | UP, 7 | RIGHT, 8 | DOWN, 9 | LEFT 10 | } 11 | -------------------------------------------------------------------------------- /src/com/javarush/test/level24/lesson02/home01/SelfInterfaceMarker.java: -------------------------------------------------------------------------------- 1 | package com.javarush.test.level24.lesson02.home01; 2 | 3 | /** 4 | * Created by Dmitry on 09.02.2016. 5 | */ 6 | public interface SelfInterfaceMarker 7 | { 8 | } 9 | -------------------------------------------------------------------------------- /src/com/javarush/test/level24/lesson02/home01/SelfInterfaceMarkerImpl.java: -------------------------------------------------------------------------------- 1 | package com.javarush.test.level24.lesson02.home01; 2 | 3 | /** 4 | * Created by Dmitry on 09.02.2016. 5 | */ 6 | public class SelfInterfaceMarkerImpl implements SelfInterfaceMarker 7 | { 8 | public void first(){} 9 | public void second(){} 10 | 11 | public SelfInterfaceMarkerImpl() 12 | { 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /src/com/javarush/test/level24/lesson02/home01/Solution.java: -------------------------------------------------------------------------------- 1 | package com.javarush.test.level24.lesson02.home01; 2 | 3 | /* Создание своего интерфейса-маркера 4 | 1. Создайте интерфейс-маркер SelfInterfaceMarker 5 | 2. Создайте класс SelfInterfaceMarkerImpl, который реализует SelfInterfaceMarker 6 | 3. Добавьте в SelfInterfaceMarkerImpl минимум 2 любых различных public метода (дефолтовый public конструктор должен присутствовать) 7 | 4. Создайте исключение UnsupportedInterfaceMarkerException 8 | 5. В методе testClass класса Util: если параметр == null, то выбросьте UnsupportedInterfaceMarkerException 9 | */ 10 | public class Solution { 11 | public static void main(String[] args) throws UnsupportedInterfaceMarkerException { 12 | SelfInterfaceMarkerImpl obj = new SelfInterfaceMarkerImpl(); 13 | Util.testClass(obj); 14 | } 15 | 16 | } 17 | -------------------------------------------------------------------------------- /src/com/javarush/test/level24/lesson02/home01/UnsupportedInterfaceMarkerException.java: -------------------------------------------------------------------------------- 1 | package com.javarush.test.level24.lesson02.home01; 2 | 3 | /** 4 | * Created by Dmitry on 09.02.2016. 5 | */ 6 | public class UnsupportedInterfaceMarkerException extends Exception 7 | { 8 | } 9 | -------------------------------------------------------------------------------- /src/com/javarush/test/level24/lesson02/home01/Util.java: -------------------------------------------------------------------------------- 1 | package com.javarush.test.level24.lesson02.home01; 2 | 3 | import java.lang.reflect.Method; 4 | 5 | public class Util { 6 | 7 | //пример того, как можно использовать интерфейс-маркер 8 | //this method is available only for a SelfInterfaceMarker implementation 9 | public static void testClass(SelfInterfaceMarker interfaceMarker) throws UnsupportedInterfaceMarkerException { 10 | 11 | if(interfaceMarker==null) 12 | throw new UnsupportedInterfaceMarkerException(); 13 | 14 | for (Method method : interfaceMarker.getClass().getDeclaredMethods()) { 15 | 16 | System.out.println(method); 17 | } 18 | } 19 | 20 | } 21 | -------------------------------------------------------------------------------- /src/com/javarush/test/level24/lesson02/task02/Solution.java: -------------------------------------------------------------------------------- 1 | package com.javarush.test.level24.lesson02.task02; 2 | 3 | import java.io.Serializable; 4 | import java.rmi.Remote; 5 | import java.util.ArrayDeque; 6 | import java.util.EventListener; 7 | 8 | /* Так-с...сопоставим 9 | Исправьте ошибки: переместите методы clone в те классы, в которых они должны быть реализованы. 10 | Лишние методы удалите. 11 | */ 12 | public class Solution { 13 | public static class A implements Serializable { 14 | 15 | } 16 | 17 | public static class B implements Remote { 18 | 19 | } 20 | 21 | public static class C extends ArrayDeque 22 | { 23 | public C clone() { 24 | return (C) super.clone(); 25 | } 26 | 27 | } 28 | 29 | public static class D implements EventListener { 30 | 31 | } 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | } 46 | -------------------------------------------------------------------------------- /src/com/javarush/test/level24/lesson04/home01/HasHeight.java: -------------------------------------------------------------------------------- 1 | package com.javarush.test.level24.lesson04.home01; 2 | 3 | public interface HasHeight { 4 | double getHeight(); 5 | 6 | 7 | } 8 | -------------------------------------------------------------------------------- /src/com/javarush/test/level24/lesson04/home01/HasWidth.java: -------------------------------------------------------------------------------- 1 | package com.javarush.test.level24.lesson04.home01; 2 | 3 | public interface HasWidth { 4 | double getWidth(); 5 | } 6 | -------------------------------------------------------------------------------- /src/com/javarush/test/level24/lesson04/home01/Point.java: -------------------------------------------------------------------------------- 1 | package com.javarush.test.level24.lesson04.home01; 2 | 3 | public class Point { 4 | private double x; 5 | private double y; 6 | 7 | public Point(double x, double y) { 8 | this.x = x; 9 | this.y = y; 10 | } 11 | 12 | public double getX() { 13 | return x; 14 | } 15 | 16 | public double getY() { 17 | return y; 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /src/com/javarush/test/level24/lesson04/home02/Action.java: -------------------------------------------------------------------------------- 1 | package com.javarush.test.level24.lesson04.home02; 2 | 3 | public interface Action { 4 | void someAction(); 5 | } 6 | -------------------------------------------------------------------------------- /src/com/javarush/test/level24/lesson04/home02/FirstClass.java: -------------------------------------------------------------------------------- 1 | package com.javarush.test.level24.lesson04.home02; 2 | 3 | public abstract class FirstClass implements Action { //first implementation 4 | 5 | protected FirstClass() { 6 | Solution.countActionObjects++; 7 | } 8 | 9 | public void someAction() { 10 | System.out.println("class FirstClass, method someAction"); 11 | } 12 | 13 | public abstract Action getDependantAction(); 14 | } 15 | -------------------------------------------------------------------------------- /src/com/javarush/test/level24/lesson04/home02/SecondClass.java: -------------------------------------------------------------------------------- 1 | package com.javarush.test.level24.lesson04.home02; 2 | 3 | public class SecondClass implements Action { //second implementation 4 | public static String SPECIFIC_ACTION_FOR_ANONYMOUS_SECOND_CLASS_PARAM = "\nSpecific action for anonymous SecondClass, param = "; 5 | 6 | private static String SECOND_CLASS_METHOD_STRING = "class SecondClass, method someAction"; 7 | 8 | public SecondClass() { 9 | Solution.countActionObjects++; 10 | } 11 | protected StringBuilder sb = new StringBuilder(SECOND_CLASS_METHOD_STRING); 12 | 13 | public void someAction() { 14 | System.out.println(sb.toString()); 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /src/com/javarush/test/level24/lesson06/home01/Mouse.java: -------------------------------------------------------------------------------- 1 | package com.javarush.test.level24.lesson06.home01; 2 | 3 | /* 4 | обратите внимание, как именно Mouse отличается от Cat 5 | Этот класс - привычный для вас. 6 | */ 7 | public class Mouse implements Pet, Sayable { 8 | @Override 9 | public Sayable toSayable(int i) { 10 | return this; 11 | } 12 | 13 | @Override 14 | public String say() { 15 | return "Мыша пищит."; 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /src/com/javarush/test/level24/lesson06/home01/Pet.java: -------------------------------------------------------------------------------- 1 | package com.javarush.test.level24.lesson06.home01; 2 | 3 | public interface Pet { 4 | public Sayable toSayable(int i); 5 | } 6 | -------------------------------------------------------------------------------- /src/com/javarush/test/level24/lesson06/home01/Sayable.java: -------------------------------------------------------------------------------- 1 | package com.javarush.test.level24.lesson06.home01; 2 | 3 | public interface Sayable { 4 | String say(); 5 | } 6 | -------------------------------------------------------------------------------- /src/com/javarush/test/level24/lesson06/home01/Solution.java: -------------------------------------------------------------------------------- 1 | package com.javarush.test.level24.lesson06.home01; 2 | 3 | import java.util.List; 4 | 5 | /* Реализация интерфейса используя локальный класс 6 | В классе Cat реализуйте логику метода toSayable, которая описана в джавадоке. 7 | */ 8 | public class Solution { 9 | public static void main(String[] args) { 10 | List pet = Util.getPets(); 11 | List pets = Util.convertPetToSayable(pet); 12 | Util.printDialog(pets); 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /src/com/javarush/test/level24/lesson06/home02/Mouse.java: -------------------------------------------------------------------------------- 1 | package com.javarush.test.level24.lesson06.home02; 2 | 3 | /* 4 | обратите внимание, как именно Mouse отличается от Dog 5 | Этот класс - привычный для вас. 6 | */ 7 | public class Mouse implements Pet, Sayable { 8 | @Override 9 | public Sayable toSayable(int i) { 10 | return this; 11 | } 12 | 13 | @Override 14 | public String say() { 15 | return "Мыша пищит."; 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /src/com/javarush/test/level24/lesson06/home02/Pet.java: -------------------------------------------------------------------------------- 1 | package com.javarush.test.level24.lesson06.home02; 2 | 3 | public interface Pet { 4 | public Sayable toSayable(int i); 5 | } 6 | -------------------------------------------------------------------------------- /src/com/javarush/test/level24/lesson06/home02/Sayable.java: -------------------------------------------------------------------------------- 1 | package com.javarush.test.level24.lesson06.home02; 2 | 3 | public interface Sayable { 4 | String say(); 5 | } 6 | -------------------------------------------------------------------------------- /src/com/javarush/test/level24/lesson06/home02/Solution.java: -------------------------------------------------------------------------------- 1 | package com.javarush.test.level24.lesson06.home02; 2 | 3 | import java.util.List; 4 | 5 | /* Как избежать Copy+Paste 6 | В классе Dog реализуйте логику метода toSayable, которая описана в джавадоке. 7 | */ 8 | public class Solution { 9 | public static void main(String[] args) { 10 | List pet = Util.getPets(); 11 | List pets = Util.convertPetToSayable(pet); 12 | Util.printDialog(pets); 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /src/com/javarush/test/level24/lesson06/home02/SuperDog.java: -------------------------------------------------------------------------------- 1 | package com.javarush.test.level24.lesson06.home02; 2 | 3 | import java.text.SimpleDateFormat; 4 | 5 | public abstract class SuperDog { 6 | protected String getSuperQuotes() { 7 | //some logic here 8 | return " *** "; 9 | } 10 | 11 | protected SimpleDateFormat formatter = new SimpleDateFormat("dd-MMM-yyyy EEE"); 12 | } 13 | -------------------------------------------------------------------------------- /src/com/javarush/test/level24/lesson09/home01/Iterator.java: -------------------------------------------------------------------------------- 1 | package com.javarush.test.level24.lesson09.home01; 2 | 3 | public interface Iterator { 4 | Iterator next(); 5 | } 6 | -------------------------------------------------------------------------------- /src/com/javarush/test/level25/lesson02/home01/Columnable.java: -------------------------------------------------------------------------------- 1 | package com.javarush.test.level25.lesson02.home01; 2 | 3 | public interface Columnable { 4 | 5 | /** 6 | * @return полное имя колонки 7 | */ 8 | String getColumnName(); 9 | 10 | /** 11 | * Возвращает true, если колонка видимая, иначе false 12 | */ 13 | boolean isShown(); 14 | 15 | /** 16 | * Скрывает колонку - маркирует колонку -1 в массиве realOrder. 17 | * Сдвигает индексы отображаемых колонок, которые идут после скрытой 18 | */ 19 | void hide(); 20 | 21 | /** 22 | * Возвращает порядок константы в энуме. 23 | * 24 | * @return порядок константы в энуме 25 | */ 26 | int ordinal(); 27 | } 28 | -------------------------------------------------------------------------------- /src/com/javarush/test/level25/lesson02/task01/Solution.java: -------------------------------------------------------------------------------- 1 | package com.javarush.test.level25.lesson02.task01; 2 | 3 | /* Новые возможности! 4 | Используя возможности enum-а реализуйте метод getLetterPosition, который должен возвращать позицию буквы (A - 1). 5 | Не должно быть закоментированного кода. 6 | */ 7 | public class Solution { 8 | public static void main(String[] args) { 9 | System.out.println(Alphabet.G.getLetterPosition()); 10 | } 11 | 12 | public enum Alphabet { 13 | A, B, C, D, E, 14 | F, G, H, I, J, 15 | K, L, M, N, O, 16 | P, Q, R, S, T, 17 | U, V, W, X, Y, Z; 18 | 19 | int getLetterPosition() { 20 | 21 | return ordinal()+1; 22 | } 23 | } 24 | } 25 | -------------------------------------------------------------------------------- /src/com/javarush/test/level25/lesson05/home01/LoggingStateThread.java: -------------------------------------------------------------------------------- 1 | package com.javarush.test.level25.lesson05.home01; 2 | 3 | /** 4 | * Created by Dmitry on 11.02.2016. 5 | */ 6 | public class LoggingStateThread extends Thread 7 | { 8 | Thread thread; 9 | public LoggingStateThread(Thread target) 10 | { 11 | 12 | this.thread = target; 13 | setDaemon(true); 14 | } 15 | 16 | @Override 17 | public void run() 18 | { 19 | 20 | State state = thread.getState(); 21 | System.out.println(state);{ 22 | while (state!=State.TERMINATED){ 23 | if(state!=thread.getState()){ 24 | state = thread.getState(); 25 | System.out.println(state); 26 | } 27 | } 28 | } 29 | 30 | 31 | 32 | System.out.println(thread); 33 | } 34 | } 35 | -------------------------------------------------------------------------------- /src/com/javarush/test/level25/lesson07/home01/CustomThreadManipulator.java: -------------------------------------------------------------------------------- 1 | package com.javarush.test.level25.lesson07.home01; 2 | 3 | public interface CustomThreadManipulator { 4 | public void start(String threadName); 5 | public void stop(); 6 | } 7 | -------------------------------------------------------------------------------- /src/com/javarush/test/level25/lesson07/home01/TaskManipulator.java: -------------------------------------------------------------------------------- 1 | package com.javarush.test.level25.lesson07.home01; 2 | 3 | public class TaskManipulator implements Runnable, CustomThreadManipulator{ 4 | 5 | String threadName; 6 | Thread thread; 7 | @Override 8 | public void run() { 9 | try { 10 | while (!thread.isInterrupted()) { 11 | Thread.sleep(0); 12 | System.out.println(threadName); 13 | Thread.sleep(100); 14 | } 15 | } catch (InterruptedException e) {} 16 | 17 | 18 | } 19 | 20 | @Override 21 | public void start(String threadName) { 22 | this.threadName = threadName; 23 | thread = new Thread(this); 24 | thread.start(); 25 | 26 | } 27 | 28 | @Override 29 | public void stop() 30 | { 31 | thread.interrupt(); 32 | } 33 | } 34 | -------------------------------------------------------------------------------- /src/com/javarush/test/level25/lesson07/home02/CancellableTask.java: -------------------------------------------------------------------------------- 1 | package com.javarush.test.level25.lesson07.home02; 2 | 3 | import java.io.IOException; 4 | import java.util.concurrent.Callable; 5 | import java.util.concurrent.RunnableFuture; 6 | 7 | public interface CancellableTask extends Callable { 8 | void cancel() throws IOException; 9 | 10 | RunnableFuture newTask(); 11 | } -------------------------------------------------------------------------------- /src/com/javarush/test/level25/lesson11/task02/Solution.java: -------------------------------------------------------------------------------- 1 | package com.javarush.test.level25.lesson11.task02; 2 | 3 | /* Первый закон Финэйгла: если эксперимент удался, что-то здесь не так... 4 | Обеспечьте переуступку кванта времени (переход хода для текущей нити) для последовательных выводов текста в консоль 5 | */ 6 | public class Solution { 7 | public static class YieldRunnable implements Runnable { 8 | private int index; 9 | 10 | public YieldRunnable(int index) { 11 | this.index = index; 12 | } 13 | 14 | public void run() { 15 | System.out.println("begin-" + index); 16 | Thread.yield(); 17 | System.out.println("end-" + index); 18 | } 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /src/com/javarush/test/level25/lesson16/big01/Bomb.java: -------------------------------------------------------------------------------- 1 | package com.javarush.test.level25.lesson16.big01; 2 | 3 | /** 4 | * Класс для бомбы. 5 | */ 6 | public class Bomb extends BaseObject 7 | { 8 | public Bomb(double x, double y) 9 | { 10 | super(x, y, 1); 11 | } 12 | 13 | /** 14 | * Отрисовываем себя на холсте. 15 | */ 16 | @Override 17 | public void draw(Canvas canvas) 18 | { 19 | canvas.setPoint(x,y,'B'); 20 | } 21 | 22 | /** 23 | * Двигаем себя вниз на один ход. 24 | */ 25 | @Override 26 | public void move() 27 | { 28 | y++; 29 | } 30 | } 31 | -------------------------------------------------------------------------------- /src/com/javarush/test/level25/lesson16/big01/Rocket.java: -------------------------------------------------------------------------------- 1 | package com.javarush.test.level25.lesson16.big01; 2 | 3 | /** 4 | * Класс для объектов-ракета 5 | */ 6 | public class Rocket extends BaseObject 7 | { 8 | 9 | public Rocket(double x, double y) 10 | { 11 | super(x, y, 1); 12 | } 13 | 14 | /** 15 | * Метод рисует свой объект на "канвасе". 16 | */ 17 | @Override 18 | public void draw(Canvas canvas) 19 | { 20 | canvas.setPoint(x,y,'R'); 21 | } 22 | 23 | /** 24 | * Двигаем себя вверх на один ход. 25 | */ 26 | @Override 27 | public void move() 28 | { 29 | y--; 30 | } 31 | } 32 | -------------------------------------------------------------------------------- /src/com/javarush/test/level26/lesson08/task01/Solution.java: -------------------------------------------------------------------------------- 1 | package com.javarush.test.level26.lesson08.task01; 2 | 3 | import java.util.concurrent.atomic.AtomicInteger; 4 | 5 | /* Вежливость - это искусственно созданное хорошее настроение. 6 | В классе Solution создайте public static класс IntegerHolder. 7 | IntegerHolder должен быть для типа int, быть нитебезопасным и изменяемым. 8 | В этом классе должны быть два public метода get и set 9 | */ 10 | public class Solution { 11 | public static void main(String[] args) { 12 | String f = new String(); 13 | } 14 | 15 | public static class IntegerHolder { 16 | private final AtomicInteger hi = new AtomicInteger(); 17 | 18 | public synchronized int get() { 19 | return hi.get(); 20 | } 21 | public synchronized void set(int i) { 22 | hi.set(i); 23 | } 24 | } 25 | } 26 | -------------------------------------------------------------------------------- /src/com/javarush/test/level26/lesson10/home01/Consumer.java: -------------------------------------------------------------------------------- 1 | package com.javarush.test.level26.lesson10.home01; 2 | 3 | import java.util.concurrent.BlockingQueue; 4 | 5 | /** 6 | * Created by Dmitry on 31.03.2016. 7 | */ 8 | public class Consumer implements Runnable { 9 | protected BlockingQueue queue; 10 | 11 | public Consumer(BlockingQueue queue) { 12 | this.queue = queue; 13 | } 14 | 15 | public void run() 16 | { 17 | try 18 | { 19 | while (true) 20 | { 21 | System.out.println(queue.take()); 22 | Thread.sleep(500); 23 | } 24 | } 25 | catch (InterruptedException e) 26 | { 27 | System.out.println(String.format("[%s] thread was terminated", Thread.currentThread().getName())); 28 | } 29 | } 30 | } -------------------------------------------------------------------------------- /src/com/javarush/test/level26/lesson10/home01/Producer.java: -------------------------------------------------------------------------------- 1 | package com.javarush.test.level26.lesson10.home01; 2 | 3 | import java.util.concurrent.BlockingQueue; 4 | 5 | public class Producer implements Runnable { 6 | protected BlockingQueue queue; 7 | 8 | public Producer(BlockingQueue queue) { 9 | this.queue = queue; 10 | } 11 | 12 | public void run() { 13 | try { 14 | int i = 0; 15 | while (true) { 16 | queue.put(String.valueOf(i++)); 17 | Thread.sleep(500); 18 | } 19 | } catch (InterruptedException e) { 20 | System.out.println(String.format("[%s] thread was terminated", Thread.currentThread().getName())); 21 | } 22 | } 23 | } -------------------------------------------------------------------------------- /src/com/javarush/test/level26/lesson10/home02/Consumer.java: -------------------------------------------------------------------------------- 1 | package com.javarush.test.level26.lesson10.home02; 2 | 3 | import java.util.concurrent.ConcurrentHashMap; 4 | 5 | public class Consumer implements Runnable { 6 | protected ConcurrentHashMap map; 7 | 8 | public Consumer(ConcurrentHashMap map) { 9 | this.map = map; 10 | } 11 | 12 | public void run() { 13 | Thread currentThread = Thread.currentThread(); 14 | while (!currentThread.isInterrupted()) { 15 | if (!map.isEmpty()) { 16 | for (String key : map.keySet()) { 17 | System.out.println(map.remove(key)); 18 | } 19 | } 20 | } 21 | } 22 | } -------------------------------------------------------------------------------- /src/com/javarush/test/level26/lesson10/home02/Producer.java: -------------------------------------------------------------------------------- 1 | package com.javarush.test.level26.lesson10.home02; 2 | 3 | import java.util.concurrent.ConcurrentHashMap; 4 | 5 | public class Producer implements Runnable 6 | { 7 | protected ConcurrentHashMap map; 8 | 9 | public Producer(ConcurrentHashMap map) { 10 | this.map = map; 11 | } 12 | 13 | public void run() { 14 | try { 15 | int i = 1; 16 | while (true) { 17 | System.out.println("Some text for "+i++); 18 | Thread.sleep(500); 19 | } 20 | } catch (InterruptedException e) { 21 | System.out.println(String.format("[%s] thread was terminated", Thread.currentThread().getName())); 22 | } 23 | } 24 | 25 | } 26 | -------------------------------------------------------------------------------- /src/com/javarush/test/level26/lesson15/big01/command/Command.java: -------------------------------------------------------------------------------- 1 | package com.javarush.test.level26.lesson15.big01.command; 2 | 3 | import com.javarush.test.level26.lesson15.big01.exception.InterruptOperationException; 4 | 5 | /** 6 | * Created by Dmitry on 17.02.2016. 7 | */ 8 | interface Command 9 | { 10 | void execute() throws InterruptOperationException; 11 | } 12 | -------------------------------------------------------------------------------- /src/com/javarush/test/level26/lesson15/big01/command/ExitCommand.java: -------------------------------------------------------------------------------- 1 | package com.javarush.test.level26.lesson15.big01.command; 2 | 3 | import com.javarush.test.level26.lesson15.big01.ConsoleHelper; 4 | import com.javarush.test.level26.lesson15.big01.exception.InterruptOperationException; 5 | 6 | import java.util.ResourceBundle; 7 | 8 | /** 9 | * Created by Dmitry on 17.02.2016. 10 | */ 11 | class ExitCommand implements Command 12 | { 13 | private ResourceBundle res = ResourceBundle.getBundle("com.javarush.test.level26.lesson15.big01.resources.exit_en"); 14 | public void execute() throws InterruptOperationException 15 | { 16 | ConsoleHelper.writeMessage(res.getString("exit.question.y.n")); 17 | 18 | if (ConsoleHelper.readString().equals(res.getString("yes"))) 19 | ConsoleHelper.writeMessage(res.getString("thank.message")); 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /src/com/javarush/test/level26/lesson15/big01/exception/InterruptOperationException.java: -------------------------------------------------------------------------------- 1 | package com.javarush.test.level26.lesson15.big01.exception; 2 | 3 | /** 4 | * Created by Dmitry on 16.02.2016. 5 | */ 6 | public class InterruptOperationException extends Exception 7 | { 8 | } 9 | -------------------------------------------------------------------------------- /src/com/javarush/test/level26/lesson15/big01/exception/NotEnoughMoneyException.java: -------------------------------------------------------------------------------- 1 | package com.javarush.test.level26.lesson15.big01.exception; 2 | 3 | /** 4 | * Created by Dmitry on 16.02.2016. 5 | */ 6 | public class NotEnoughMoneyException extends Exception 7 | { 8 | } 9 | -------------------------------------------------------------------------------- /src/com/javarush/test/level26/lesson15/big01/resources/common_en.properties: -------------------------------------------------------------------------------- 1 | the.end=Terminated. Thank you for visiting JavaRush cash machine. Good luck. 2 | choose.operation=Please choose an operation desired or type 'EXIT' for exiting 3 | operation.INFO=INFO 4 | operation.DEPOSIT=DEPOSIT 5 | operation.WITHDRAW=WITHDRAW 6 | operation.EXIT=EXIT 7 | invalid.data=Please specify valid data. 8 | choose.currency.code=Please choose a currency code, for example USD 9 | choose.denomination.and.count.format=Please specify integer denomination and integer count. For example '10 3' means 30 %s -------------------------------------------------------------------------------- /src/com/javarush/test/level26/lesson15/big01/resources/deposit_en.properties: -------------------------------------------------------------------------------- 1 | before=Depositing... 2 | success.format=%d %s was deposited successfully 3 | invalid.data=Please specify valid data. -------------------------------------------------------------------------------- /src/com/javarush/test/level26/lesson15/big01/resources/exit_en.properties: -------------------------------------------------------------------------------- 1 | exit.question.y.n=Do you really want to exit? 2 | yes=y 3 | thank.message=Thank you for visiting JavaRush cash machine. Good luck. -------------------------------------------------------------------------------- /src/com/javarush/test/level26/lesson15/big01/resources/info_en.properties: -------------------------------------------------------------------------------- 1 | before=Information: 2 | no.money=No money available. -------------------------------------------------------------------------------- /src/com/javarush/test/level26/lesson15/big01/resources/login_en.properties: -------------------------------------------------------------------------------- 1 | before=Logging in... 2 | specify.data=Please specify your credit card number and pin code or type 'EXIT' for exiting. 3 | success.format=Credit card [%s] is verified successfully! 4 | not.verified.format=Credit card [%s] is not verified. 5 | try.again.or.exit=Please try again or type 'EXIT' for urgent exiting 6 | try.again.with.details=Please specify valid credit card number - 12 digits, pin code - 4 digits. -------------------------------------------------------------------------------- /src/com/javarush/test/level26/lesson15/big01/resources/verifiedCards.properties: -------------------------------------------------------------------------------- 1 | 123456789012=1234 2 | 234567890123=2345 3 | 345678901234=3456 -------------------------------------------------------------------------------- /src/com/javarush/test/level26/lesson15/big01/resources/withdraw_en.properties: -------------------------------------------------------------------------------- 1 | before=Withdrawing... 2 | success.format=%d %s was withdrawn successfully 3 | specify.amount=Please specify integer amount for withdrawing. 4 | specify.not.empty.amount=Please specify valid positive integer amount for withdrawing. 5 | not.enough.money=Not enough money on your account, please try again 6 | exact.amount.not.available=Exact amount is not available -------------------------------------------------------------------------------- /src/com/javarush/test/level27/lesson02/task02/Solution.java: -------------------------------------------------------------------------------- 1 | package com.javarush.test.level27.lesson02.task02; 2 | 3 | /* Нужный оператор 4 | Вставьте в код единственную строчку - оператор (не break), чтобы выводился треугольник из букв S 5 | */ 6 | public class Solution { 7 | public static void main(String args[]) { 8 | label: 9 | for (int i = 0; i < 10; i++) { 10 | 11 | for (int j = 0; j < 10; j++) { 12 | 13 | if (j > i) { 14 | System.out.println(); 15 | continue label; 16 | } 17 | 18 | System.out.print("S"); 19 | } 20 | } 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /src/com/javarush/test/level27/lesson04/home01/Solution.java: -------------------------------------------------------------------------------- 1 | package com.javarush.test.level27.lesson04.home01; 2 | 3 | /* Модификаторы и дедлоки 4 | Расставьте модификаторы так, чтобы при работе с этим кодом появился дедлок 5 | */ 6 | public class Solution { 7 | 8 | 9 | public synchronized Object getData() { 10 | return new ThreadDeadlock().getData(); 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /src/com/javarush/test/level27/lesson04/home01/ThreadDeadlock.java: -------------------------------------------------------------------------------- 1 | package com.javarush.test.level27.lesson04.home01; 2 | 3 | public class ThreadDeadlock { 4 | 5 | Object data; 6 | 7 | public synchronized Object getData() { 8 | return data; 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /src/com/javarush/test/level27/lesson04/task02/Solution.java: -------------------------------------------------------------------------------- 1 | package com.javarush.test.level27.lesson04.task02; 2 | 3 | /* Второй вариант дедлока 4 | В методе secondMethod в синхронизированных блоках расставьте локи так, 5 | чтобы при использовании класса Solution нитями образовывался дедлок 6 | */ 7 | public class Solution { 8 | private final Object lock = new Object(); 9 | 10 | public synchronized void firstMethod() { 11 | synchronized (lock) { 12 | doSomething(); 13 | } 14 | } 15 | 16 | public void secondMethod() { 17 | synchronized (lock){ 18 | synchronized (this) 19 | { 20 | doSomething(); 21 | } 22 | } 23 | } 24 | 25 | private void doSomething() { 26 | } 27 | } -------------------------------------------------------------------------------- /src/com/javarush/test/level27/lesson06/home01/Apartment.java: -------------------------------------------------------------------------------- 1 | package com.javarush.test.level27.lesson06.home01; 2 | 3 | public class Apartment { 4 | private String location; 5 | private final RealEstate realEstate; 6 | 7 | public Apartment(RealEstate realEstate) { 8 | this.realEstate = realEstate; 9 | setLocation(String.valueOf(Math.random() * 10)); 10 | } 11 | 12 | public synchronized String getLocation() { 13 | return location; 14 | } 15 | 16 | public synchronized void setLocation(String location) { 17 | this.location = location; 18 | } 19 | 20 | public void revalidate(boolean isEmpty) { 21 | if (isEmpty) 22 | realEstate.up(this); 23 | } 24 | } 25 | -------------------------------------------------------------------------------- /src/com/javarush/test/level27/lesson09/home01/ConsumerTask.java: -------------------------------------------------------------------------------- 1 | package com.javarush.test.level27.lesson09.home01; 2 | 3 | public class ConsumerTask implements Runnable { 4 | private TransferObject transferObject; 5 | protected volatile boolean stopped; 6 | 7 | public ConsumerTask(TransferObject transferObject) { 8 | this.transferObject = transferObject; 9 | new Thread(this, "ConsumerTask").start(); 10 | } 11 | 12 | public void run() { 13 | while (!stopped) { 14 | transferObject.get(); 15 | } 16 | } 17 | 18 | public void stop() { 19 | stopped = true; 20 | } 21 | } -------------------------------------------------------------------------------- /src/com/javarush/test/level27/lesson09/home01/ProducerTask.java: -------------------------------------------------------------------------------- 1 | package com.javarush.test.level27.lesson09.home01; 2 | 3 | import java.util.concurrent.atomic.AtomicInteger; 4 | 5 | public class ProducerTask implements Runnable { 6 | private TransferObject transferObject; 7 | protected volatile boolean stopped; 8 | static volatile AtomicInteger i = new AtomicInteger(0); 9 | 10 | public ProducerTask(TransferObject transferObject) { 11 | this.transferObject = transferObject; 12 | new Thread(this, "ProducerTask").start(); 13 | } 14 | 15 | public void run() { 16 | while (!stopped) { 17 | transferObject.put(i.incrementAndGet()); 18 | } 19 | } 20 | 21 | public void stop() { 22 | stopped = true; 23 | } 24 | } 25 | -------------------------------------------------------------------------------- /src/com/javarush/test/level27/lesson09/home02/Mail.java: -------------------------------------------------------------------------------- 1 | package com.javarush.test.level27.lesson09.home02; 2 | 3 | public class Mail { 4 | private String text; 5 | 6 | public String getText() { 7 | return text; 8 | } 9 | 10 | public void setText(String text) { 11 | this.text = text; 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /src/com/javarush/test/level27/lesson09/home02/Person.java: -------------------------------------------------------------------------------- 1 | package com.javarush.test.level27.lesson09.home02; 2 | 3 | public class Person implements Runnable { 4 | private final Mail mail; 5 | 6 | public Person(Mail mail) { 7 | this.mail = mail; 8 | } 9 | 10 | @Override 11 | public void run() { 12 | String name = Thread.currentThread().getName(); 13 | try { 14 | Thread.sleep(1000); 15 | //сделайте что-то тут - do something here 16 | synchronized (mail){ 17 | mail.setText("Person [" + name + "] has written an email 'AAA'"); 18 | //сделайте что-то тут - do something here 19 | mail.notifyAll(); 20 | } 21 | } catch (InterruptedException e) { 22 | e.printStackTrace(); 23 | } 24 | } 25 | } 26 | -------------------------------------------------------------------------------- /src/com/javarush/test/level27/lesson09/home02/Solution.java: -------------------------------------------------------------------------------- 1 | package com.javarush.test.level27.lesson09.home02; 2 | 3 | /* Расставьте wait-notify. 4 | Расставьте wait-notify. 5 | Пример вывода: 6 | Thread-0 MailServer has got: [Person [Thread-1] has written an email 'AAA'] in 1001 ms after start 7 | */ 8 | public class Solution { 9 | public static void main(String[] args) { 10 | Mail mail = new Mail(); 11 | Thread server = new Thread(new MailServer(mail)); 12 | Thread amigo = new Thread(new Person(mail)); 13 | 14 | server.start(); 15 | amigo.start(); 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /src/com/javarush/test/level27/lesson09/task01/Solution.java: -------------------------------------------------------------------------------- 1 | package com.javarush.test.level27.lesson09.task01; 2 | 3 | import java.util.concurrent.CountDownLatch; 4 | 5 | /* CountDownLatch 6 | Дана стандартная реализация методологии wait-notify. 7 | Почитайте про CountDownLatch и перепишите тело метода someMethod используя поле latch. 8 | Весь лишний код удалите из класса. 9 | */ 10 | public abstract class Solution { 11 | 12 | private final CountDownLatch latch = new CountDownLatch(1); 13 | 14 | public void someMethod() throws InterruptedException { 15 | 16 | latch.await(); 17 | retrieveValue(); 18 | latch.countDown(); 19 | } 20 | 21 | abstract void retrieveValue(); 22 | } 23 | -------------------------------------------------------------------------------- /src/com/javarush/test/level27/lesson15/big01/Restaurant.java: -------------------------------------------------------------------------------- 1 | package com.javarush.test.level27.lesson15.big01; 2 | 3 | 4 | import com.javarush.test.level27.lesson15.big01.kitchen.Cook; 5 | import com.javarush.test.level27.lesson15.big01.kitchen.Waitor; 6 | 7 | import java.io.IOException; 8 | 9 | /** 10 | * Created by Dmitry on 22.03.2016. 11 | */ 12 | public class Restaurant 13 | { 14 | public static void main(String[] args) throws IOException 15 | { 16 | Cook cook = new Cook("Amigo"); 17 | Tablet tablet = new Tablet(5); 18 | Waitor waitor = new Waitor(); 19 | 20 | cook.addObserver(waitor); 21 | tablet.addObserver(cook); 22 | tablet.createOrder(); 23 | 24 | 25 | 26 | } 27 | } 28 | -------------------------------------------------------------------------------- /src/com/javarush/test/level27/lesson15/big01/ad/NoVideoAvailableException.java: -------------------------------------------------------------------------------- 1 | package com.javarush.test.level27.lesson15.big01.ad; 2 | 3 | /** 4 | * Created by Dmitry on 22.03.2016. 5 | */ 6 | public class NoVideoAvailableException extends RuntimeException 7 | { 8 | } 9 | -------------------------------------------------------------------------------- /src/com/javarush/test/level27/lesson15/big01/kitchen/Cook.java: -------------------------------------------------------------------------------- 1 | package com.javarush.test.level27.lesson15.big01.kitchen; 2 | 3 | 4 | import com.javarush.test.level27.lesson15.big01.ConsoleHelper; 5 | 6 | import java.util.Observable; 7 | import java.util.Observer; 8 | 9 | /** 10 | * Created by Dmitry on 19.02.2016. 11 | */ 12 | public class Cook extends Observable implements Observer 13 | { 14 | String name; 15 | public Cook(String name) 16 | { 17 | this.name = name; 18 | } 19 | 20 | @Override 21 | public String toString() 22 | { 23 | return name; 24 | } 25 | 26 | @Override 27 | public void update(Observable observable, Object arg) 28 | { 29 | ConsoleHelper.writeMessage("Start cooking - " + arg + ", cooking time " + ((Order) arg).getTotalCookingTime() + "min"); 30 | 31 | super.setChanged(); 32 | notifyObservers(arg); 33 | } 34 | } 35 | -------------------------------------------------------------------------------- /src/com/javarush/test/level27/lesson15/big01/kitchen/Dish.java: -------------------------------------------------------------------------------- 1 | package com.javarush.test.level27.lesson15.big01.kitchen; 2 | 3 | /** 4 | * Created by Dmitry on 22.03.2016. 5 | */ 6 | public enum Dish { 7 | Fish(25), Steak(30), Soup(15), Juice(5), Water(3); 8 | 9 | 10 | private int duration; 11 | 12 | Dish(int i) 13 | { 14 | duration = i; 15 | } 16 | 17 | public int getDuration() 18 | { 19 | return duration; 20 | } 21 | 22 | public static String allDishesToString() { 23 | StringBuilder sb = new StringBuilder(); 24 | for (Dish dish : Dish.values()) { 25 | sb.append(dish); 26 | sb.append(", "); 27 | } 28 | sb.delete(sb.length()-2,sb.length()); 29 | return sb.toString(); 30 | } 31 | } 32 | -------------------------------------------------------------------------------- /src/com/javarush/test/level27/lesson15/big01/kitchen/Waitor.java: -------------------------------------------------------------------------------- 1 | package com.javarush.test.level27.lesson15.big01.kitchen; 2 | 3 | 4 | import com.javarush.test.level27.lesson15.big01.ConsoleHelper; 5 | 6 | import java.util.Observable; 7 | import java.util.Observer; 8 | 9 | /** 10 | * Created by Dmitry on 19.02.2016. 11 | */ 12 | public class Waitor implements Observer 13 | { 14 | @Override 15 | public void update(Observable o, Object arg) 16 | { 17 | ConsoleHelper.writeMessage(arg + " was cooked by " + ((Cook) o).name); 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /src/com/javarush/test/level27/lesson15/big01/statistic/event/EventDataRow.java: -------------------------------------------------------------------------------- 1 | package com.javarush.test.level27.lesson15.big01.statistic.event; 2 | 3 | /** 4 | * Created by Dmitry on 23.03.2016. 5 | */ 6 | public interface EventDataRow 7 | { 8 | } 9 | -------------------------------------------------------------------------------- /src/com/javarush/test/level27/lesson15/big01/statistic/event/EventType.java: -------------------------------------------------------------------------------- 1 | package com.javarush.test.level27.lesson15.big01.statistic.event; 2 | 3 | /** 4 | * Created by Dmitry on 23.03.2016. 5 | */ 6 | public enum EventType 7 | { 8 | COOKED_ORDER, SELECTED_VIDEOS, NO_AVAILABLE_VIDEO 9 | } 10 | -------------------------------------------------------------------------------- /src/com/javarush/test/level27/lesson15/big01/statistic/event/NoAvailableVideoEventDataRow.java: -------------------------------------------------------------------------------- 1 | package com.javarush.test.level27.lesson15.big01.statistic.event; 2 | 3 | import java.util.Date; 4 | 5 | /** 6 | * Created by Dmitry on 23.03.2016. 7 | */ 8 | public class NoAvailableVideoEventDataRow implements EventDataRow 9 | { 10 | private int totalDuration; 11 | private Date currentDate; 12 | public NoAvailableVideoEventDataRow(int totalDuration) 13 | { 14 | this.totalDuration = totalDuration; 15 | currentDate = new Date(); 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /src/com/javarush/test/level27/lesson15/big01/statistic/event/VideoSelectedEventDataRow.java: -------------------------------------------------------------------------------- 1 | package com.javarush.test.level27.lesson15.big01.statistic.event; 2 | 3 | import com.javarush.test.level27.lesson15.big01.ad.Advertisement; 4 | 5 | import java.util.Date; 6 | import java.util.List; 7 | 8 | /** 9 | * Created by Dmitry on 23.03.2016. 10 | */ 11 | public class VideoSelectedEventDataRow implements EventDataRow 12 | { 13 | private List optimalVideoSet; 14 | private long amount; 15 | private int totalDuration; 16 | private Date currentDate; 17 | public VideoSelectedEventDataRow(List optimalVideoSet, long amount, int totalDuration) 18 | { 19 | this.optimalVideoSet = optimalVideoSet; 20 | this.amount = amount; 21 | this.totalDuration = totalDuration; 22 | currentDate = new Date(); 23 | 24 | } 25 | } 26 | -------------------------------------------------------------------------------- /src/com/javarush/test/level28/lesson10/home01/Character.java: -------------------------------------------------------------------------------- 1 | package com.javarush.test.level28.lesson10.home01; 2 | 3 | import java.util.concurrent.ThreadLocalRandom; 4 | 5 | public abstract class Character implements Runnable { 6 | protected abstract int getId(); 7 | 8 | public void run() { 9 | System.out.println(toString() + " вступил в игру"); 10 | doSomething(); 11 | System.out.println(toString() + " умер"); 12 | } 13 | 14 | private void doSomething() { 15 | try { 16 | Thread.currentThread().sleep(ThreadLocalRandom.current().nextInt(10, 100)); 17 | } catch (InterruptedException ignored) { 18 | } 19 | } 20 | 21 | @Override 22 | public String toString() { 23 | return getClass().getSimpleName() + " #" + getId(); 24 | } 25 | 26 | } 27 | -------------------------------------------------------------------------------- /src/com/javarush/test/level28/lesson10/home01/Plant.java: -------------------------------------------------------------------------------- 1 | package com.javarush.test.level28.lesson10.home01; 2 | 3 | import java.util.concurrent.atomic.AtomicInteger; 4 | 5 | public class Plant extends Character { 6 | private final static AtomicInteger idSequence = new AtomicInteger(); 7 | private final int id = idSequence.incrementAndGet(); 8 | 9 | protected int getId() { 10 | return id; 11 | } 12 | } -------------------------------------------------------------------------------- /src/com/javarush/test/level28/lesson10/home01/Zombie.java: -------------------------------------------------------------------------------- 1 | package com.javarush.test.level28.lesson10.home01; 2 | 3 | import java.util.concurrent.atomic.AtomicInteger; 4 | 5 | public class Zombie extends Character { 6 | private final static AtomicInteger idSequence = new AtomicInteger(); 7 | private final int id = idSequence.incrementAndGet(); 8 | 9 | protected int getId() { 10 | return id; 11 | } 12 | } 13 | 14 | -------------------------------------------------------------------------------- /src/com/javarush/test/level28/lesson10/home01/output.txt: -------------------------------------------------------------------------------- 1 | Plant #1 присоединился к игре 2 | Plant #2 присоединился к игре 3 | Plant #1 готовится играть 4 | Zombie #1 присоединился к игре 5 | Zombie #2 присоединился к игре 6 | Zombie #3 присоединился к игре 7 | Plant #2 готовится играть 8 | Zombie #2 готовится играть 9 | Zombie #1 готовится играть 10 | Zombie #3 готовится играть 11 | Игра началась! 12 | Zombie #1 вступил в игру 13 | Zombie #3 вступил в игру 14 | Plant #1 вступил в игру 15 | Zombie #2 вступил в игру 16 | Plant #2 вступил в игру 17 | Zombie #2 умер 18 | Plant #2 умер 19 | Plant #1 умер 20 | Zombie #3 умер 21 | Zombie #1 умер -------------------------------------------------------------------------------- /src/com/javarush/test/level28/lesson15/big01/Controller.java: -------------------------------------------------------------------------------- 1 | package com.javarush.test.level28.lesson15.big01; 2 | 3 | import com.javarush.test.level28.lesson15.big01.model.Model; 4 | 5 | /** 6 | * Created by Dmitry on 20.02.2016. 7 | */ 8 | public class Controller 9 | 10 | { 11 | public Model model; 12 | 13 | public Controller(Model model) 14 | { 15 | if(model == null){ 16 | throw new IllegalArgumentException(); 17 | } 18 | else if (model.providers.length == 0) 19 | { 20 | throw new IllegalArgumentException(); 21 | } 22 | this.model = model; 23 | } 24 | public void onCitySelect(String cityName) 25 | { 26 | model.selectCity(cityName); 27 | } 28 | } 29 | -------------------------------------------------------------------------------- /src/com/javarush/test/level28/lesson15/big01/model/Provider.java: -------------------------------------------------------------------------------- 1 | package com.javarush.test.level28.lesson15.big01.model; 2 | 3 | import com.javarush.test.level28.lesson15.big01.vo.Vacancy; 4 | 5 | import java.util.List; 6 | 7 | /** 8 | * Created by Dmitry on 20.02.2016. 9 | */ 10 | public class Provider 11 | { 12 | private Strategy strategy; 13 | 14 | public Provider(Strategy strategy) 15 | { 16 | 17 | this.strategy = strategy; 18 | } 19 | public void setStrategy(Strategy strategy) 20 | { 21 | this.strategy = strategy; 22 | } 23 | 24 | public List getJavaVacancies(String searchString){ 25 | 26 | return strategy.getVacancies(searchString); 27 | } 28 | } 29 | -------------------------------------------------------------------------------- /src/com/javarush/test/level28/lesson15/big01/model/Strategy.java: -------------------------------------------------------------------------------- 1 | package com.javarush.test.level28.lesson15.big01.model; 2 | 3 | import com.javarush.test.level28.lesson15.big01.vo.Vacancy; 4 | 5 | import java.util.List; 6 | 7 | /** 8 | * Created by Dmitry on 20.02.2016. 9 | */ 10 | public interface Strategy 11 | { 12 | List getVacancies(String searchString); 13 | 14 | } 15 | -------------------------------------------------------------------------------- /src/com/javarush/test/level28/lesson15/big01/view/View.java: -------------------------------------------------------------------------------- 1 | package com.javarush.test.level28.lesson15.big01.view; 2 | 3 | import com.javarush.test.level28.lesson15.big01.Controller; 4 | import com.javarush.test.level28.lesson15.big01.vo.Vacancy; 5 | 6 | import java.util.List; 7 | 8 | /** 9 | * Created by Dmitry on 20.02.2016. 10 | */ 11 | public interface View 12 | { 13 | void update(List vacancies); 14 | void setController(Controller controller); 15 | } 16 | -------------------------------------------------------------------------------- /src/com/javarush/test/level28/lesson15/big01/view/backup.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | Вакансии 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 |
TitleCityCompany NameSalary
Junior Java DeveloperEntire WorldJavaRush1mmm
29 | 30 | -------------------------------------------------------------------------------- /src/com/javarush/test/level29/lesson02/task02/file.txt: -------------------------------------------------------------------------------- 1 | This file will be opened by Notepad.exe 2 | You can change the content. -------------------------------------------------------------------------------- /src/com/javarush/test/level29/lesson09/bonus01/Computable.java: -------------------------------------------------------------------------------- 1 | package com.javarush.test.level29.lesson09.bonus01; 2 | 3 | /* Argument and Value are generic types*/ 4 | public interface Computable { 5 | Value compute(Argument argument) throws InterruptedException; 6 | } 7 | -------------------------------------------------------------------------------- /src/com/javarush/test/level29/lesson09/bonus01/Square.java: -------------------------------------------------------------------------------- 1 | package com.javarush.test.level29.lesson09.bonus01; 2 | 3 | public class Square implements Computable { 4 | @Override 5 | public Integer compute(Integer integer) throws InterruptedException { 6 | int val = integer.intValue(); 7 | return val * val; 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /src/com/javarush/test/level29/lesson09/task01/Solution.java: -------------------------------------------------------------------------------- 1 | package com.javarush.test.level29.lesson09.task01; 2 | 3 | import java.math.BigDecimal; 4 | 5 | /* Этот странный BigDecimal 6 | Исправьте ошибку реализации, приводящую к погрешности вычисления, в методе getValue. 7 | Сигнатуру метода не менять. Округле0ние не использовать. 8 | Читайте доп. статью про особенности автобоксинга. 9 | */ 10 | public class Solution { 11 | public static void main(String[] args) { 12 | System.out.println(getValue(1.1d, 1.2d)); 13 | } 14 | 15 | public static BigDecimal getValue(double v1, double v2) { 16 | BigDecimal decimal = BigDecimal.valueOf(v1).add(BigDecimal.valueOf(v2)); 17 | return decimal; 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /src/com/javarush/test/level29/lesson15/big01/car/Cabriolet.java: -------------------------------------------------------------------------------- 1 | package com.javarush.test.level29.lesson15.big01.car; 2 | 3 | /** 4 | * Created by Dmitry on 28.02.2016. 5 | */ 6 | public class Cabriolet extends Car 7 | { 8 | int numberOfPassengers; 9 | public Cabriolet(int numberOfPassengers) 10 | { 11 | super(Car.CABRIOLET,numberOfPassengers); 12 | } 13 | 14 | @Override 15 | public int getMaxSpeed() 16 | { 17 | final int MAX_CABRIOLET_SPEED = 90; 18 | return MAX_CABRIOLET_SPEED; 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /src/com/javarush/test/level29/lesson15/big01/car/Sedan.java: -------------------------------------------------------------------------------- 1 | package com.javarush.test.level29.lesson15.big01.car; 2 | 3 | /** 4 | * Created by Dmitry on 28.02.2016. 5 | */ 6 | public class Sedan extends Car 7 | { 8 | int numberOfPassengers; 9 | public Sedan(int numberOfPassengers) 10 | { 11 | super(Car.SEDAN, numberOfPassengers); 12 | } 13 | 14 | @Override 15 | public int getMaxSpeed() 16 | { 17 | final int MAX_SEDAN_SPEED = 120; 18 | return MAX_SEDAN_SPEED; 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /src/com/javarush/test/level29/lesson15/big01/car/Truck.java: -------------------------------------------------------------------------------- 1 | package com.javarush.test.level29.lesson15.big01.car; 2 | 3 | /** 4 | * Created by Dmitry on 28.02.2016. 5 | */ 6 | public class Truck extends Car 7 | { 8 | int numberOfPassengers; 9 | public Truck(int numberOfPassengers) 10 | { 11 | super(Car.TRUCK,numberOfPassengers); 12 | } 13 | 14 | @Override 15 | public int getMaxSpeed() 16 | { 17 | final int MAX_TRUCK_SPEED = 80; 18 | return MAX_TRUCK_SPEED; 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /src/com/javarush/test/level29/lesson15/big01/human/Alive.java: -------------------------------------------------------------------------------- 1 | package com.javarush.test.level29.lesson15.big01.human; 2 | 3 | /** 4 | * Created by Dmitry on 27.02.2016. 5 | */ 6 | public interface Alive 7 | { 8 | void live(); 9 | } 10 | -------------------------------------------------------------------------------- /src/com/javarush/test/level29/lesson15/big01/human/BloodGroup.java: -------------------------------------------------------------------------------- 1 | package com.javarush.test.level29.lesson15.big01.human; 2 | 3 | /** 4 | * Created by Dmitry on 28.02.2016. 5 | */ 6 | public class BloodGroup 7 | { 8 | private int code; 9 | 10 | private BloodGroup(int code) 11 | { 12 | this.code = code; 13 | } 14 | 15 | 16 | 17 | public static BloodGroup first(){ 18 | return new BloodGroup(1); 19 | } 20 | public static BloodGroup second(){ 21 | return new BloodGroup(2); 22 | } 23 | public static BloodGroup third(){ 24 | return new BloodGroup(3); 25 | } 26 | public static BloodGroup fourth(){ 27 | return new BloodGroup(4); 28 | } 29 | 30 | 31 | 32 | 33 | public int getCode() 34 | { 35 | return code; 36 | } 37 | 38 | public void setCode(int code) 39 | { 40 | this.code = code; 41 | } 42 | 43 | } 44 | -------------------------------------------------------------------------------- /src/com/javarush/test/level29/lesson15/big01/human/Soldier.java: -------------------------------------------------------------------------------- 1 | package com.javarush.test.level29.lesson15.big01.human; 2 | 3 | /** 4 | * Created by Dmitry on 27.02.2016. 5 | */ 6 | public class Soldier extends Human 7 | { 8 | public Soldier(String name, int age) { 9 | super(name, age); 10 | } 11 | 12 | public void live() { 13 | fight(); 14 | } 15 | 16 | public void fight() { 17 | } 18 | 19 | } 20 | -------------------------------------------------------------------------------- /src/com/javarush/test/level29/lesson15/big01/human/Teacher.java: -------------------------------------------------------------------------------- 1 | package com.javarush.test.level29.lesson15.big01.human; 2 | 3 | public class Teacher extends UniversityPerson { 4 | private int numberOfStudents; 5 | 6 | 7 | public Teacher(String name, int age, int numberOfStudents) { 8 | super(name,age); 9 | this.numberOfStudents = numberOfStudents; 10 | } 11 | public void live() { 12 | teach(); 13 | } 14 | public void teach() { 15 | } 16 | @Override 17 | public String getPosition() 18 | { 19 | return "Преподаватель"; 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /src/com/javarush/test/level29/lesson15/big01/human/UniversityPerson.java: -------------------------------------------------------------------------------- 1 | package com.javarush.test.level29.lesson15.big01.human; 2 | 3 | /** 4 | * Created by Dmitry on 27.02.2016. 5 | */ 6 | public class UniversityPerson extends Human{ 7 | private University university; 8 | 9 | public UniversityPerson(String name, int age) { 10 | super(name, age); 11 | } 12 | 13 | public University getUniversity() { 14 | return university; 15 | } 16 | 17 | public void setUniversity(University university) { 18 | this.university = university; 19 | } 20 | } -------------------------------------------------------------------------------- /src/com/javarush/test/level29/lesson15/big01/human/Worker.java: -------------------------------------------------------------------------------- 1 | package com.javarush.test.level29.lesson15.big01.human; 2 | 3 | public class Worker extends Human{ 4 | private double salary; 5 | 6 | public String getCompany() 7 | { 8 | return company; 9 | } 10 | 11 | public void setCompany(String company) 12 | { 13 | this.company = company; 14 | } 15 | 16 | private String company; 17 | 18 | public Worker(String name, int age) 19 | { 20 | super(name, age); 21 | } 22 | 23 | public void live() { 24 | live(); 25 | } 26 | 27 | public double getSalary() { 28 | return salary; 29 | } 30 | 31 | public void setSalary(double salary) 32 | { 33 | this.salary = salary; 34 | } 35 | } 36 | -------------------------------------------------------------------------------- /src/com/javarush/test/level29/lesson15/big01/user/Address.java: -------------------------------------------------------------------------------- 1 | package com.javarush.test.level29.lesson15.big01.user; 2 | 3 | /** 4 | * Created by Dmitry on 28.02.2016. 5 | */ 6 | public class Address 7 | { 8 | private String country; 9 | private String city; 10 | private String house; 11 | 12 | public String getCountry() 13 | { 14 | return country; 15 | } 16 | 17 | public void setCountry(String country) 18 | { 19 | this.country = country; 20 | } 21 | 22 | public String getCity() 23 | { 24 | return city; 25 | } 26 | 27 | public void setCity(String city) 28 | { 29 | this.city = city; 30 | } 31 | 32 | public String getHouse() 33 | { 34 | return house; 35 | } 36 | 37 | public void setHouse(String house) 38 | { 39 | this.house = house; 40 | } 41 | } 42 | -------------------------------------------------------------------------------- /src/com/javarush/test/level29/lesson15/big01/user/Work.java: -------------------------------------------------------------------------------- 1 | package com.javarush.test.level29.lesson15.big01.user; 2 | 3 | public class Work { 4 | private String boss; 5 | 6 | public String getBoss() { 7 | return boss; 8 | } 9 | 10 | public void setBoss(String boss) { 11 | this.boss = boss; 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /src/com/javarush/test/level30/lesson02/home01/NumerationSystem.java: -------------------------------------------------------------------------------- 1 | package com.javarush.test.level30.lesson02.home01; 2 | 3 | public interface NumerationSystem { 4 | int getNumerationSystemIntValue(); 5 | } 6 | -------------------------------------------------------------------------------- /src/com/javarush/test/level30/lesson02/home01/NumerationSystemType.java: -------------------------------------------------------------------------------- 1 | package com.javarush.test.level30.lesson02.home01; 2 | 3 | public enum NumerationSystemType implements NumerationSystem { 4 | _16, 5 | _12, 6 | _10, 7 | _9, 8 | _8, 9 | _7, 10 | _6, 11 | _5, 12 | _4, 13 | _3, 14 | _2; 15 | 16 | @Override 17 | public int getNumerationSystemIntValue() { 18 | return Integer.parseInt(this.name().substring(1)); 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /src/com/javarush/test/level30/lesson04/home01/Consumer.java: -------------------------------------------------------------------------------- 1 | package com.javarush.test.level30.lesson04.home01; 2 | 3 | import java.util.concurrent.TransferQueue; 4 | 5 | /** 6 | * Created by Dmitry on 03.04.2016. 7 | */ 8 | public class Consumer implements Runnable { 9 | private TransferQueue queue; 10 | 11 | public Consumer(TransferQueue queue) { 12 | this.queue = queue; 13 | } 14 | 15 | @Override 16 | public void run() { 17 | try { 18 | Thread.sleep(500); 19 | while (!Thread.currentThread().isInterrupted()) { 20 | ShareItem item = queue.take(); 21 | System.out.println("Processing " + item.toString()); 22 | } 23 | } 24 | catch (InterruptedException e) { 25 | return; 26 | } 27 | } 28 | } -------------------------------------------------------------------------------- /src/com/javarush/test/level30/lesson06/home01/BinaryRepresentationTask.java: -------------------------------------------------------------------------------- 1 | package com.javarush.test.level30.lesson06.home01; 2 | 3 | import java.util.concurrent.RecursiveTask; 4 | 5 | /** 6 | * Created by Dmitry on 29.02.2016. 7 | */ 8 | public class BinaryRepresentationTask extends RecursiveTask 9 | { 10 | private int x; 11 | public BinaryRepresentationTask(int x) 12 | { 13 | this.x = x; 14 | } 15 | 16 | 17 | @Override 18 | protected String compute() 19 | { 20 | int a = x % 2; 21 | int b = x / 2; 22 | String result = String.valueOf(a); 23 | if (b > 0) { 24 | BinaryRepresentationTask task = new BinaryRepresentationTask(b); 25 | task.fork(); 26 | return task.join() + result; 27 | } 28 | return result; 29 | } 30 | 31 | } 32 | -------------------------------------------------------------------------------- /src/com/javarush/test/level30/lesson08/home01/Pair.java: -------------------------------------------------------------------------------- 1 | package com.javarush.test.level30.lesson08.home01; 2 | 3 | public class Pair { 4 | private int x; 5 | private int y; 6 | 7 | public Pair(int x, int y) { 8 | this.x = x; 9 | this.y = y; 10 | } 11 | 12 | @Override 13 | public String toString() { 14 | return String.format("x=%d, y=%d", x, y); 15 | } 16 | 17 | public void swap() { 18 | x = x ^ y; 19 | y = x ^ y; 20 | x = x ^ y; 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /src/com/javarush/test/level30/lesson08/home01/Solution.java: -------------------------------------------------------------------------------- 1 | package com.javarush.test.level30.lesson08.home01; 2 | 3 | /* Swap по-новому 4 | В классе Pair реализуйте метод swap, который должен для x, y менять местами их значения. 5 | Можно использовать только операции 1)исключающее или, 2) присваивание 6 | Не оставляйте комментарии, не меняйте остальной код 7 | */ 8 | public class Solution { 9 | public static void main(String[] args) { 10 | /* expected output 11 | x=4, y=5 12 | x=5, y=4 13 | */ 14 | 15 | Pair pair = new Pair(4, 5); 16 | System.out.println(pair); 17 | pair.swap(); 18 | System.out.println(pair); 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /src/com/javarush/test/level30/lesson15/big01/Message.java: -------------------------------------------------------------------------------- 1 | package com.javarush.test.level30.lesson15.big01; 2 | 3 | import java.io.Serializable; 4 | 5 | /** 6 | * Created by Dmitry on 29.02.2016. 7 | */ 8 | public class Message implements Serializable 9 | { 10 | private final MessageType type; 11 | private final String data; 12 | 13 | public Message(MessageType type) 14 | { 15 | this.type = type; 16 | this.data = null; 17 | } 18 | 19 | public Message(MessageType type, String data) 20 | { 21 | this.type = type; 22 | this.data = data; 23 | } 24 | 25 | public MessageType getType() 26 | { 27 | return type; 28 | } 29 | 30 | public String getData() 31 | { 32 | return data; 33 | } 34 | } 35 | -------------------------------------------------------------------------------- /src/com/javarush/test/level30/lesson15/big01/MessageType.java: -------------------------------------------------------------------------------- 1 | package com.javarush.test.level30.lesson15.big01; 2 | 3 | /** 4 | * Created by Dmitry on 29.02.2016. 5 | */ 6 | public enum MessageType 7 | { 8 | NAME_REQUEST, 9 | USER_NAME, 10 | NAME_ACCEPTED, 11 | TEXT, 12 | USER_ADDED, 13 | USER_REMOVED 14 | } 15 | -------------------------------------------------------------------------------- /src/com/javarush/test/level31/lesson08/home01/FileData.java: -------------------------------------------------------------------------------- 1 | package com.javarush.test.level31.lesson08.home01; 2 | 3 | public interface FileData { 4 | boolean isHidden(); 5 | 6 | boolean isExecutable(); 7 | 8 | boolean isDirectory(); 9 | 10 | boolean isWritable(); 11 | } 12 | -------------------------------------------------------------------------------- /src/com/javarush/test/level31/lesson15/big01/ConsoleHelper.java: -------------------------------------------------------------------------------- 1 | package com.javarush.test.level31.lesson15.big01; 2 | 3 | import java.io.BufferedReader; 4 | import java.io.IOException; 5 | import java.io.InputStreamReader; 6 | 7 | public class ConsoleHelper { 8 | private static BufferedReader bis = new BufferedReader(new InputStreamReader(System.in)); 9 | 10 | public static void writeMessage(String message) { 11 | System.out.println(message); 12 | } 13 | 14 | public static String readString() throws IOException { 15 | String text = bis.readLine(); 16 | return text; 17 | } 18 | 19 | public static int readInt() throws IOException { 20 | String text = readString(); 21 | return Integer.parseInt(text.trim()); 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /src/com/javarush/test/level31/lesson15/big01/Operation.java: -------------------------------------------------------------------------------- 1 | package com.javarush.test.level31.lesson15.big01; 2 | 3 | public enum Operation { 4 | CREATE, 5 | ADD, 6 | REMOVE, 7 | EXTRACT, 8 | CONTENT, 9 | EXIT 10 | } 11 | -------------------------------------------------------------------------------- /src/com/javarush/test/level31/lesson15/big01/command/Command.java: -------------------------------------------------------------------------------- 1 | package com.javarush.test.level31.lesson15.big01.command; 2 | 3 | public interface Command { 4 | void execute() throws Exception; 5 | } 6 | -------------------------------------------------------------------------------- /src/com/javarush/test/level31/lesson15/big01/command/ExitCommand.java: -------------------------------------------------------------------------------- 1 | package com.javarush.test.level31.lesson15.big01.command; 2 | 3 | import com.javarush.test.level31.lesson15.big01.ConsoleHelper; 4 | 5 | public class ExitCommand implements Command { 6 | @Override 7 | public void execute() throws Exception { 8 | ConsoleHelper.writeMessage("До встречи!"); 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /src/com/javarush/test/level31/lesson15/big01/command/ZipCommand.java: -------------------------------------------------------------------------------- 1 | package com.javarush.test.level31.lesson15.big01.command; 2 | 3 | import com.javarush.test.level31.lesson15.big01.ConsoleHelper; 4 | import com.javarush.test.level31.lesson15.big01.ZipFileManager; 5 | 6 | import java.nio.file.Path; 7 | import java.nio.file.Paths; 8 | 9 | public abstract class ZipCommand implements Command { 10 | 11 | public ZipFileManager getZipFileManager() throws Exception{ 12 | ConsoleHelper.writeMessage("Введите полный путь файла архива:"); 13 | Path zipPath = Paths.get(ConsoleHelper.readString()); 14 | return new ZipFileManager(zipPath); 15 | } 16 | } -------------------------------------------------------------------------------- /src/com/javarush/test/level31/lesson15/big01/command/ZipRemoveCommand.java: -------------------------------------------------------------------------------- 1 | package com.javarush.test.level31.lesson15.big01.command; 2 | 3 | import com.javarush.test.level31.lesson15.big01.ConsoleHelper; 4 | import com.javarush.test.level31.lesson15.big01.ZipFileManager; 5 | 6 | import java.nio.file.Path; 7 | import java.nio.file.Paths; 8 | 9 | public class ZipRemoveCommand extends ZipCommand { 10 | @Override 11 | public void execute() throws Exception { 12 | ConsoleHelper.writeMessage("Удаление файла из архива."); 13 | 14 | ZipFileManager zipFileManager = getZipFileManager(); 15 | 16 | ConsoleHelper.writeMessage("Введите полный путь файла в архиве:"); 17 | Path sourcePath = Paths.get(ConsoleHelper.readString()); 18 | zipFileManager.removeFile(sourcePath); 19 | 20 | ConsoleHelper.writeMessage("Удаление из архива завершено."); 21 | } 22 | } -------------------------------------------------------------------------------- /src/com/javarush/test/level31/lesson15/big01/exception/PathIsNotFoundException.java: -------------------------------------------------------------------------------- 1 | package com.javarush.test.level31.lesson15.big01.exception; 2 | 3 | public class PathIsNotFoundException extends Exception { 4 | } 5 | -------------------------------------------------------------------------------- /src/com/javarush/test/level31/lesson15/big01/exception/WrongZipFileException.java: -------------------------------------------------------------------------------- 1 | package com.javarush.test.level31.lesson15.big01.exception; 2 | 3 | public class WrongZipFileException extends Exception { 4 | } 5 | -------------------------------------------------------------------------------- /src/com/javarush/test/level32/lesson02/task01/Solution.java: -------------------------------------------------------------------------------- 1 | package com.javarush.test.level32.lesson02.task01; 2 | 3 | import java.io.IOException; 4 | import java.io.RandomAccessFile; 5 | 6 | /* Запись в файл 7 | В метод main приходят три параметра: 8 | 1) fileName - путь к файлу 9 | 2) number - число, позиция в файле 10 | 3) text - текст 11 | Записать text в файл fileName начиная с позиции number. 12 | Если файл слишком короткий, то записать в конец файла. 13 | */ 14 | public class Solution { 15 | public static void main(String... args) throws IOException 16 | { 17 | int number = Integer.parseInt(args[1]); 18 | String text = args[2]; 19 | RandomAccessFile raf = new RandomAccessFile(args[0], "rw"); 20 | if (raf.length()>number){ 21 | raf.seek(number); 22 | }else { 23 | raf.seek(raf.length()); 24 | } 25 | raf.write(text.getBytes()); 26 | } 27 | } 28 | -------------------------------------------------------------------------------- /src/com/javarush/test/level32/lesson04/home01/file.txt: -------------------------------------------------------------------------------- 1 | sdbadfbzsdgav 2 | ghjdxfmx 3 | hmcfm -------------------------------------------------------------------------------- /src/com/javarush/test/level32/lesson08/bonus01/Big.java: -------------------------------------------------------------------------------- 1 | package com.javarush.test.level32.lesson08.bonus01; 2 | 3 | public interface Big extends Item { 4 | } 5 | -------------------------------------------------------------------------------- /src/com/javarush/test/level32/lesson08/bonus01/Item.java: -------------------------------------------------------------------------------- 1 | package com.javarush.test.level32.lesson08.bonus01; 2 | 3 | public interface Item { 4 | } 5 | -------------------------------------------------------------------------------- /src/com/javarush/test/level32/lesson08/bonus01/ItemInvocationHandler.java: -------------------------------------------------------------------------------- 1 | package com.javarush.test.level32.lesson08.bonus01; 2 | 3 | import java.lang.reflect.InvocationHandler; 4 | import java.lang.reflect.Method; 5 | 6 | public class ItemInvocationHandler implements InvocationHandler { 7 | @Override 8 | public Object invoke(Object proxy, Method method, Object[] args) throws Throwable { 9 | return null; 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /src/com/javarush/test/level32/lesson08/bonus01/Small.java: -------------------------------------------------------------------------------- 1 | package com.javarush.test.level32.lesson08.bonus01; 2 | 3 | public interface Small { 4 | } 5 | -------------------------------------------------------------------------------- /src/com/javarush/test/level32/lesson08/home01/CustomInvocationHandler.java: -------------------------------------------------------------------------------- 1 | package com.javarush.test.level32.lesson08.home01; 2 | 3 | import java.lang.reflect.InvocationHandler; 4 | import java.lang.reflect.Method; 5 | 6 | /** 7 | * Created by Dmitry on 14.03.2016. 8 | */ 9 | public class CustomInvocationHandler implements InvocationHandler 10 | { 11 | private SomeInterfaceWithMethods someInterface; 12 | 13 | public CustomInvocationHandler(SomeInterfaceWithMethods someInterfaceWithMethods) 14 | { 15 | this.someInterface = someInterfaceWithMethods; 16 | } 17 | 18 | @Override 19 | public Object invoke(Object proxy, Method method, Object[] args) throws Throwable 20 | { 21 | 22 | 23 | System.out.println(method.getName() + " in"); 24 | Object o = method.invoke(someInterface, args); 25 | System.out.println(method.getName() + " out"); 26 | return o; 27 | } 28 | } 29 | -------------------------------------------------------------------------------- /src/com/javarush/test/level32/lesson08/home01/SomeInterfaceWithMethods.java: -------------------------------------------------------------------------------- 1 | package com.javarush.test.level32.lesson08.home01; 2 | 3 | public interface SomeInterfaceWithMethods { 4 | void voidMethodWithoutArgs(); 5 | 6 | String stringMethodWithoutArgs(); 7 | 8 | void voidMethodWithIntArg(int i); 9 | } 10 | -------------------------------------------------------------------------------- /src/com/javarush/test/level32/lesson08/home01/SomeInterfaceWithMethodsImpl.java: -------------------------------------------------------------------------------- 1 | package com.javarush.test.level32.lesson08.home01; 2 | 3 | public class SomeInterfaceWithMethodsImpl implements SomeInterfaceWithMethods { 4 | public void voidMethodWithoutArgs() { 5 | System.out.println("inside voidMethodWithoutArgs"); 6 | } 7 | 8 | public String stringMethodWithoutArgs() { 9 | System.out.println("inside stringMethodWithoutArgs"); 10 | return null; 11 | } 12 | 13 | public void voidMethodWithIntArg(int i) { 14 | System.out.println("inside voidMethodWithIntArg"); 15 | voidMethodWithoutArgs(); 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /src/com/javarush/test/level32/lesson10/home01/DoubleString.java: -------------------------------------------------------------------------------- 1 | package com.javarush.test.level32.lesson10.home01; 2 | 3 | import java.rmi.Remote; 4 | import java.rmi.RemoteException; 5 | 6 | public interface DoubleString extends Remote 7 | { 8 | public String doubleString(String str) throws RemoteException; 9 | } 10 | 11 | -------------------------------------------------------------------------------- /src/com/javarush/test/level32/lesson10/home01/DoubleStringImpl.java: -------------------------------------------------------------------------------- 1 | package com.javarush.test.level32.lesson10.home01; 2 | 3 | import java.rmi.RemoteException; 4 | 5 | public class DoubleStringImpl implements DoubleString { 6 | public String doubleString(String str) throws RemoteException { 7 | return str + str; 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /src/com/javarush/test/level32/lesson15/big01/ExceptionHandler.java: -------------------------------------------------------------------------------- 1 | package com.javarush.test.level32.lesson15.big01; 2 | 3 | /** 4 | * Created by Dmitry on 11.03.2016. 5 | */ 6 | public class ExceptionHandler extends Exception 7 | { 8 | public static void log(Exception e){ 9 | System.out.println(e.toString()); 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /src/com/javarush/test/level32/lesson15/big01/HTMLFileFilter.java: -------------------------------------------------------------------------------- 1 | package com.javarush.test.level32.lesson15.big01; 2 | 3 | import javax.swing.filechooser.FileFilter; 4 | import java.io.File; 5 | 6 | /** 7 | * Created by Dmitry on 14.03.2016. 8 | */ 9 | public class HTMLFileFilter extends FileFilter 10 | { 11 | @Override 12 | public boolean accept(File f) 13 | { 14 | if (f.isDirectory()) 15 | return true; 16 | String fileName = f.getName().toLowerCase(); 17 | return fileName.endsWith(".html") || fileName.endsWith(".htm"); 18 | } 19 | 20 | @Override 21 | public String getDescription() 22 | { 23 | return "HTML и HTM файлы"; 24 | } 25 | } 26 | -------------------------------------------------------------------------------- /src/com/javarush/test/level32/lesson15/big01/actions/RedoAction.java: -------------------------------------------------------------------------------- 1 | package com.javarush.test.level32.lesson15.big01.actions; 2 | 3 | import com.javarush.test.level32.lesson15.big01.View; 4 | 5 | import javax.swing.*; 6 | import java.awt.event.ActionEvent; 7 | 8 | /** 9 | * Created by Dmitry on 12.03.2016. 10 | */ 11 | public class RedoAction extends AbstractAction 12 | { 13 | private View view; 14 | @Override 15 | public void actionPerformed(ActionEvent e) 16 | { 17 | view.redo(); 18 | } 19 | public RedoAction(View view){ 20 | this.view = view; 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /src/com/javarush/test/level32/lesson15/big01/actions/UndoAction.java: -------------------------------------------------------------------------------- 1 | package com.javarush.test.level32.lesson15.big01.actions; 2 | 3 | import com.javarush.test.level32.lesson15.big01.View; 4 | 5 | import javax.swing.*; 6 | import java.awt.event.ActionEvent; 7 | 8 | /** 9 | * Created by Dmitry on 12.03.2016. 10 | */ 11 | public class UndoAction extends AbstractAction 12 | { 13 | private View view; 14 | @Override 15 | public void actionPerformed(ActionEvent e) 16 | { 17 | view.undo(); 18 | } 19 | 20 | public UndoAction(View view){ 21 | this.view = view; 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /src/com/javarush/test/level32/lesson15/big01/listeners/FrameListener.java: -------------------------------------------------------------------------------- 1 | package com.javarush.test.level32.lesson15.big01.listeners; 2 | 3 | import com.javarush.test.level32.lesson15.big01.View; 4 | 5 | import java.awt.event.WindowAdapter; 6 | import java.awt.event.WindowEvent; 7 | 8 | /** 9 | * Created by Dmitry on 11.03.2016. 10 | */ 11 | public class FrameListener extends WindowAdapter 12 | { 13 | private View view; 14 | 15 | public FrameListener(View view) 16 | { 17 | this.view = view; 18 | } 19 | 20 | @Override 21 | public void windowClosing(WindowEvent e) 22 | { 23 | view.exit(); 24 | } 25 | } 26 | -------------------------------------------------------------------------------- /src/com/javarush/test/level32/lesson15/big01/listeners/TabbedPaneChangeListener.java: -------------------------------------------------------------------------------- 1 | package com.javarush.test.level32.lesson15.big01.listeners; 2 | 3 | import com.javarush.test.level32.lesson15.big01.View; 4 | 5 | import javax.swing.event.ChangeEvent; 6 | import javax.swing.event.ChangeListener; 7 | 8 | /** 9 | * Created by Dmitry on 11.03.2016. 10 | */ 11 | public class TabbedPaneChangeListener implements ChangeListener 12 | { 13 | private View view; 14 | 15 | public TabbedPaneChangeListener(View view) 16 | { 17 | this.view = view; 18 | } 19 | @Override 20 | public void stateChanged(ChangeEvent e) 21 | { 22 | view.selectedTabChanged(); 23 | } 24 | 25 | } 26 | -------------------------------------------------------------------------------- /src/com/javarush/test/level32/lesson15/big01/listeners/UndoListener.java: -------------------------------------------------------------------------------- 1 | package com.javarush.test.level32.lesson15.big01.listeners; 2 | 3 | import javax.swing.event.UndoableEditEvent; 4 | import javax.swing.event.UndoableEditListener; 5 | import javax.swing.undo.UndoManager; 6 | 7 | /** 8 | * Created by Dmitry on 13.03.2016. 9 | */ 10 | public class UndoListener implements UndoableEditListener { 11 | 12 | private UndoManager undoManager; 13 | 14 | public UndoListener(UndoManager undoManager) { 15 | this.undoManager = undoManager; 16 | } 17 | 18 | @Override 19 | public void undoableEditHappened(UndoableEditEvent e) { 20 | undoManager.addEdit(e.getEdit()); 21 | 22 | } 23 | 24 | } -------------------------------------------------------------------------------- /src/com/javarush/test/level33/lesson05/home05/Auto.java: -------------------------------------------------------------------------------- 1 | package com.javarush.test.level33.lesson05.home05; 2 | 3 | import com.fasterxml.jackson.annotation.JsonAutoDetect; 4 | import com.fasterxml.jackson.annotation.JsonTypeInfo; 5 | 6 | @JsonAutoDetect 7 | @JsonTypeInfo(use = JsonTypeInfo.Id.CLASS, property="className") 8 | public abstract class Auto { 9 | protected String name; 10 | protected String owner; 11 | protected int age; 12 | } -------------------------------------------------------------------------------- /src/com/javarush/test/level33/lesson05/home05/Car.java: -------------------------------------------------------------------------------- 1 | package com.javarush.test.level33.lesson05.home05; 2 | 3 | public class Car extends Auto { 4 | } -------------------------------------------------------------------------------- /src/com/javarush/test/level33/lesson05/home05/Motorbike.java: -------------------------------------------------------------------------------- 1 | package com.javarush.test.level33.lesson05.home05; 2 | 3 | public class Motorbike extends Auto { 4 | private String owner; 5 | 6 | public Motorbike(String name) { 7 | this.name = name; 8 | } 9 | 10 | public String getName() { 11 | return name; 12 | } 13 | 14 | public String getOwner() { 15 | return owner; 16 | } 17 | 18 | public void setOwner(String owner) { 19 | this.owner = owner; 20 | } 21 | 22 | @Override 23 | public String toString() { 24 | return "Motorbike{" + 25 | "name='" + name + '\'' + 26 | ", owner='" + owner + '\'' + 27 | '}'; 28 | } 29 | } -------------------------------------------------------------------------------- /src/com/javarush/test/level33/lesson05/home05/RaceBike.java: -------------------------------------------------------------------------------- 1 | package com.javarush.test.level33.lesson05.home05; 2 | 3 | public class RaceBike extends Motorbike { 4 | private String owner; 5 | private int age; 6 | 7 | public RaceBike(String name, String owner, int age) { 8 | super(name); 9 | this.owner = owner; 10 | this.age = age; 11 | } 12 | 13 | public String getName() { 14 | return name; 15 | } 16 | 17 | public String getOwner() { 18 | return owner; 19 | } 20 | 21 | public int getAge() { 22 | return age; 23 | } 24 | 25 | @Override 26 | public String toString() { 27 | return "RaceBike{" + 28 | "name='" + name + '\'' + 29 | ", owner='" + owner + '\'' + 30 | ", age=" + age + 31 | '}'; 32 | } 33 | } -------------------------------------------------------------------------------- /src/com/javarush/test/level33/lesson10/home01/Shop.java: -------------------------------------------------------------------------------- 1 | package com.javarush.test.level33.lesson10.home01; 2 | 3 | import javax.xml.bind.annotation.XmlElementWrapper; 4 | import javax.xml.bind.annotation.XmlRootElement; 5 | import javax.xml.bind.annotation.XmlType; 6 | import java.util.ArrayList; 7 | import java.util.List; 8 | 9 | /** 10 | * Created by Dmitry on 15.03.2016. 11 | */ 12 | @XmlType(name = "shop") 13 | @XmlRootElement 14 | class Shop 15 | { 16 | @XmlElementWrapper(name="goods", nillable = true) 17 | public List names; 18 | public int count; 19 | public double profit; 20 | public List secretData; 21 | 22 | public Shop() 23 | { 24 | names = new ArrayList<>(); 25 | secretData = new ArrayList<>(); 26 | } 27 | } 28 | 29 | -------------------------------------------------------------------------------- /src/com/javarush/test/level33/lesson10/home01/data.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | S1 5 | S2 6 | 7 | 12 8 | 123.4 9 | String1 10 | String2 11 | String3 12 | String4 13 | String5 14 | -------------------------------------------------------------------------------- /src/com/javarush/test/level33/lesson15/big01/ExceptionHandler.java: -------------------------------------------------------------------------------- 1 | package com.javarush.test.level33.lesson15.big01; 2 | 3 | /** 4 | * Created by Dmitry on 15.03.2016. 5 | */ 6 | public class ExceptionHandler 7 | { 8 | public static void log(Exception e){ 9 | Helper.printMessage(e.toString()); 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /src/com/javarush/test/level33/lesson15/big01/Helper.java: -------------------------------------------------------------------------------- 1 | package com.javarush.test.level33.lesson15.big01; 2 | 3 | import java.math.BigInteger; 4 | import java.security.SecureRandom; 5 | 6 | /** 7 | * Created by Dmitry on 15.03.2016. 8 | */ 9 | public class Helper 10 | { 11 | public static String generateRandomString() 12 | { 13 | SecureRandom random = new SecureRandom(); 14 | return new BigInteger(130, random).toString(32); 15 | } 16 | 17 | public static void printMessage(String message) 18 | { 19 | System.out.println(message); 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /src/com/javarush/test/level33/lesson15/big01/strategies/StorageStrategy.java: -------------------------------------------------------------------------------- 1 | package com.javarush.test.level33.lesson15.big01.strategies; 2 | 3 | /** 4 | * Created by Dmitry on 15.03.2016. 5 | */ 6 | public interface StorageStrategy 7 | { 8 | boolean containsKey(Long key); 9 | boolean containsValue(String value); 10 | void put(Long key, String value); 11 | Long getKey(String value); 12 | String getValue(Long key); 13 | } 14 | -------------------------------------------------------------------------------- /src/com/javarush/test/level34/lesson02/task02/Solution.java: -------------------------------------------------------------------------------- 1 | package com.javarush.test.level34.lesson02.task02; 2 | 3 | /* Факториал с помощью рекурсии 4 | Почитать про вычисление факториала. 5 | Реализовать логику метода factorial, где n - это число, факториал которого нужно вычислить. 6 | Не создавайте статические переменные и поля класса. 7 | */ 8 | public class Solution { 9 | public static void main(String[] args) { 10 | Solution solution = new Solution(); 11 | 12 | System.out.println(solution.factorial(9)); //362880 13 | System.out.println(solution.factorial(0)); //1 14 | System.out.println(solution.factorial(1)); //1 15 | } 16 | 17 | public int factorial(int n) { 18 | if (n==1||n==0) 19 | return 1; 20 | return factorial(n-1)*n; 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /src/com/javarush/test/level34/lesson15/big01/controller/EventListener.java: -------------------------------------------------------------------------------- 1 | package com.javarush.test.level34.lesson15.big01.controller; 2 | 3 | import com.javarush.test.level34.lesson15.big01.model.Direction; 4 | 5 | /** 6 | * Created by Dmitry on 17.03.2016. 7 | */ 8 | public interface EventListener 9 | { 10 | void move(Direction direction); 11 | void restart(); 12 | void startNextLevel(); 13 | void levelCompleted(int level); 14 | } 15 | -------------------------------------------------------------------------------- /src/com/javarush/test/level34/lesson15/big01/model/Box.java: -------------------------------------------------------------------------------- 1 | package com.javarush.test.level34.lesson15.big01.model; 2 | 3 | import java.awt.*; 4 | 5 | /** 6 | * Created by Dmitry on 17.03.2016. 7 | */ 8 | public class Box extends CollisionObject implements Movable 9 | { 10 | public Box(int x, int y) 11 | { 12 | super(x, y); 13 | } 14 | 15 | @Override 16 | public void draw(Graphics graphics) 17 | { 18 | graphics.setColor(Color.ORANGE); 19 | graphics.drawRect(getX(),getY(),getWidth(),getHeight()); 20 | } 21 | 22 | @Override 23 | public void move(int x, int y) 24 | { 25 | setX(getX() + x); 26 | setY(getY() + y); 27 | } 28 | } 29 | -------------------------------------------------------------------------------- /src/com/javarush/test/level34/lesson15/big01/model/Direction.java: -------------------------------------------------------------------------------- 1 | package com.javarush.test.level34.lesson15.big01.model; 2 | 3 | /** 4 | * Created by Dmitry on 17.03.2016. 5 | */ 6 | public enum Direction 7 | { 8 | LEFT, RIGHT, UP, DOWN 9 | } 10 | -------------------------------------------------------------------------------- /src/com/javarush/test/level34/lesson15/big01/model/Home.java: -------------------------------------------------------------------------------- 1 | package com.javarush.test.level34.lesson15.big01.model; 2 | 3 | import java.awt.*; 4 | 5 | /** 6 | * Created by Dmitry on 17.03.2016. 7 | */ 8 | public class Home extends GameObject 9 | { 10 | public Home(int x, int y) 11 | { 12 | super(x, y); 13 | } 14 | 15 | @Override 16 | public void draw(Graphics graphics) 17 | { 18 | graphics.setColor(Color.RED); 19 | graphics.drawRoundRect(getX(),getY(),getWidth(),getHeight(),1,1); 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /src/com/javarush/test/level34/lesson15/big01/model/Movable.java: -------------------------------------------------------------------------------- 1 | package com.javarush.test.level34.lesson15.big01.model; 2 | 3 | /** 4 | * Created by Dmitry on 17.03.2016. 5 | */ 6 | public interface Movable 7 | { 8 | void move(int x, int y); 9 | } 10 | -------------------------------------------------------------------------------- /src/com/javarush/test/level34/lesson15/big01/model/Player.java: -------------------------------------------------------------------------------- 1 | package com.javarush.test.level34.lesson15.big01.model; 2 | 3 | import java.awt.*; 4 | 5 | /** 6 | * Created by Dmitry on 17.03.2016. 7 | */ 8 | public class Player extends CollisionObject implements Movable 9 | { 10 | public Player(int x, int y) 11 | { 12 | super(x, y); 13 | } 14 | 15 | @Override 16 | public void draw(Graphics graphics) 17 | { 18 | graphics.setColor(Color.BLUE); 19 | graphics.drawOval(getX(),getY(),getWidth(),getHeight()); 20 | } 21 | 22 | @Override 23 | public void move(int x, int y) 24 | { 25 | setX(getX() + x); 26 | setY(getY() + y); 27 | } 28 | } 29 | -------------------------------------------------------------------------------- /src/com/javarush/test/level34/lesson15/big01/model/Wall.java: -------------------------------------------------------------------------------- 1 | package com.javarush.test.level34.lesson15.big01.model; 2 | 3 | import java.awt.*; 4 | 5 | /** 6 | * Created by Dmitry on 17.03.2016. 7 | */ 8 | public class Wall extends CollisionObject 9 | { 10 | public Wall(int x, int y) 11 | { 12 | super(x, y); 13 | } 14 | 15 | @Override 16 | public void draw(Graphics graphics) 17 | { 18 | graphics.setColor(Color.LIGHT_GRAY); 19 | graphics.drawRect(getX(),getY(),getWidth(),getHeight()); 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /src/com/javarush/test/level35/lesson04/home01/GenericStatic.java: -------------------------------------------------------------------------------- 1 | package com.javarush.test.level35.lesson04.home01; 2 | 3 | public class GenericStatic { 4 | 5 | 6 | 7 | public static Object someStaticMethod(T genericObject) { 8 | System.out.println(genericObject); 9 | 10 | return genericObject; 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /src/com/javarush/test/level35/lesson04/home01/Solution.java: -------------------------------------------------------------------------------- 1 | package com.javarush.test.level35.lesson04.home01; 2 | /* Вызов статического метода 3 | Измените статический метод в классе GenericStatic так, чтобы он стал дженериком. 4 | Пример вызова дан в методе main. 5 | */ 6 | public class Solution { 7 | public static void main(String[] args) { 8 | Number number = (Number) GenericStatic.someStaticMethod(new Integer(3)); 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /src/com/javarush/test/level35/lesson04/task01/Solution.java: -------------------------------------------------------------------------------- 1 | package com.javarush.test.level35.lesson04.task01; 2 | 3 | import java.util.List; 4 | 5 | /* Знакомство с дженериками 6 | Параметризируйте классы SomeClass и Solution следующим образом: 7 | 1. SomeClass должен работать с типами, которые наследуются от Number; 8 | 2. Solution должен работать с типами, которые наследуются от List, который в свою очередь параметризируется типом SomeClass. 9 | */ 10 | public class Solution> 11 | { 12 | public static class SomeClass 13 | { 14 | 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /src/com/javarush/test/level35/lesson06/home01/ClassForGenerics.java: -------------------------------------------------------------------------------- 1 | package com.javarush.test.level35.lesson06.home01; 2 | 3 | public class ClassForGenerics { 4 | } 5 | -------------------------------------------------------------------------------- /src/com/javarush/test/level35/lesson06/home01/InterfaceForGenerics.java: -------------------------------------------------------------------------------- 1 | package com.javarush.test.level35.lesson06.home01; 2 | 3 | public interface InterfaceForGenerics { 4 | } 5 | -------------------------------------------------------------------------------- /src/com/javarush/test/level36/lesson04/big01/Util.java: -------------------------------------------------------------------------------- 1 | package com.javarush.test.level36.lesson04.big01; 2 | 3 | import com.javarush.test.level36.lesson04.big01.bean.User; 4 | 5 | public final class Util { 6 | public static final String DELETED_MARKER = " (deleted)"; 7 | 8 | public static boolean isUserDeleted(User user) { 9 | return user.getName().endsWith(DELETED_MARKER); 10 | } 11 | 12 | public static void markDeleted(User user) { 13 | if (User.NULL_USER != user && !Util.isUserDeleted(user)) { 14 | user.setName(user.getName() + DELETED_MARKER); 15 | } 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /src/com/javarush/test/level36/lesson04/big01/model/Model.java: -------------------------------------------------------------------------------- 1 | package com.javarush.test.level36.lesson04.big01.model; 2 | 3 | /** 4 | * Created by Dmitry on 20.03.2016. 5 | */ 6 | public interface Model 7 | { 8 | ModelData getModelData(); 9 | void loadUsers(); 10 | void loadDeletedUsers(); 11 | void loadUserById(long userId); 12 | void deleteUserById(long id); 13 | void changeUserData(String name, long id, int level); 14 | } 15 | -------------------------------------------------------------------------------- /src/com/javarush/test/level36/lesson04/big01/model/service/UserService.java: -------------------------------------------------------------------------------- 1 | package com.javarush.test.level36.lesson04.big01.model.service; 2 | 3 | import com.javarush.test.level36.lesson04.big01.bean.User; 4 | 5 | import java.util.List; 6 | 7 | public interface UserService { 8 | public User deleteUser(long id); 9 | 10 | public User createOrUpdateUser(String name, long id, int level); 11 | 12 | public List getUsersByName(String name); 13 | 14 | public List getAllDeletedUsers(); 15 | 16 | public List getUsersBetweenLevels(int fromLevel, int toLevel); 17 | 18 | List filterOnlyActiveUsers(List allUsers); 19 | 20 | User getUsersById(long userId); 21 | } 22 | -------------------------------------------------------------------------------- /src/com/javarush/test/level36/lesson04/big01/view/View.java: -------------------------------------------------------------------------------- 1 | package com.javarush.test.level36.lesson04.big01.view; 2 | 3 | import com.javarush.test.level36.lesson04.big01.controller.Controller; 4 | import com.javarush.test.level36.lesson04.big01.model.ModelData; 5 | 6 | /** 7 | * Created by Dmitry on 20.03.2016. 8 | */ 9 | public interface View 10 | { 11 | void refresh(ModelData modelData); 12 | void setController(Controller controller); 13 | } 14 | -------------------------------------------------------------------------------- /src/com/javarush/test/level36/lesson04/home01/Controller.java: -------------------------------------------------------------------------------- 1 | package com.javarush.test.level36.lesson04.home01; 2 | 3 | import java.util.List; 4 | 5 | /** 6 | * Created by Dmitry on 20.03.2016. 7 | */ 8 | public class Controller 9 | { 10 | private Model model = new Model(); 11 | 12 | 13 | public List onDataListShow() { 14 | return model.getStringDataList(); 15 | } 16 | 17 | } 18 | -------------------------------------------------------------------------------- /src/com/javarush/test/level36/lesson04/home01/Model.java: -------------------------------------------------------------------------------- 1 | package com.javarush.test.level36.lesson04.home01; 2 | 3 | import java.util.List; 4 | 5 | /** 6 | * Created by Dmitry on 20.03.2016. 7 | */ 8 | public class Model 9 | { 10 | private Service service = new Service(); 11 | 12 | public List getStringDataList() { 13 | return service.getData(); 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /src/com/javarush/test/level36/lesson04/home01/Service.java: -------------------------------------------------------------------------------- 1 | package com.javarush.test.level36.lesson04.home01; 2 | 3 | import java.util.ArrayList; 4 | import java.util.List; 5 | 6 | /** 7 | * Created by Dmitry on 20.03.2016. 8 | */ 9 | public class Service 10 | { 11 | public List getData() { 12 | List data = new ArrayList() {{ 13 | add("First string"); 14 | add("Second string"); 15 | add("Third string"); 16 | }}; 17 | return data; 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /src/com/javarush/test/level36/lesson04/home01/Solution.java: -------------------------------------------------------------------------------- 1 | package com.javarush.test.level36.lesson04.home01; 2 | 3 | /* MVC - простая версия 4 | В отдельных файлах создай классы Service, Model, View, Controller. 5 | Распредели методы из класса Solution по созданным классам учитывая, что должен получиться MVC. 6 | Создай нужные поля класса при необходимости. 7 | Не добавляй своих других методов. 8 | Метод main оставь в классе Solution. 9 | */ 10 | public class Solution { 11 | public static void main(String[] args) { 12 | View view = new View(); 13 | view.fireEventShowData(); 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /src/com/javarush/test/level36/lesson04/home01/View.java: -------------------------------------------------------------------------------- 1 | package com.javarush.test.level36.lesson04.home01; 2 | 3 | /** 4 | * Created by Dmitry on 20.03.2016. 5 | */ 6 | public class View 7 | { 8 | private Controller controller = new Controller(); 9 | 10 | 11 | public void fireEventShowData() { 12 | System.out.println(controller.onDataListShow()); 13 | } 14 | 15 | } 16 | -------------------------------------------------------------------------------- /src/com/javarush/test/level36/lesson06/task01/Solution.java: -------------------------------------------------------------------------------- 1 | package com.javarush.test.level36.lesson06.task01; 2 | 3 | import java.util.Collections; 4 | 5 | /* Найти класс по описанию 6 | 1. Реализует интерфейс List 7 | 2. Является приватным статическим классом внутри популярного утилитного класса 8 | 3. Доступ по индексу запрещен - кидается исключение IndexOutOfBoundsException 9 | 4. Используйте рефлекшн, чтобы добраться до искомого класса 10 | */ 11 | public class Solution 12 | { 13 | public static void main(String[] args) 14 | { 15 | System.out.println(getExpectedClass()); 16 | } 17 | 18 | public static Class getExpectedClass() 19 | { 20 | return Collections.EMPTY_LIST.getClass(); 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /src/com/javarush/test/level36/lesson08/task01/file: -------------------------------------------------------------------------------- 1 | v /sdgVFZ -------------------------------------------------------------------------------- /src/com/javarush/test/level36/lesson10/task01/Solution.java: -------------------------------------------------------------------------------- 1 | package com.javarush.test.level36.lesson10.task01; 2 | 3 | import java.util.concurrent.DelayQueue; 4 | 5 | /* Найти класс по описанию 6 | 1. Реализует интерфейс Queue 7 | 2. Используется при работе с трэдами 8 | 3. Из этой очереди элементы могут быть взяты только тогда, когда они заэкспарятся, их время задержки истекло 9 | 4. Головой очереди является элемент, который заэкспарился раньше всех 10 | */ 11 | public class Solution { 12 | public static void main(String[] args) { 13 | System.out.println(getExpectedClass()); 14 | } 15 | 16 | public static Class getExpectedClass() { 17 | return DelayQueue.class; 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /src/com/javarush/test/level37/lesson04/big01/AbstractFactory.java: -------------------------------------------------------------------------------- 1 | package com.javarush.test.level37.lesson04.big01; 2 | 3 | /** 4 | * Created by Dmitry on 26.03.2016. 5 | */ 6 | public interface AbstractFactory 7 | { 8 | Human getPerson(int age); 9 | } 10 | -------------------------------------------------------------------------------- /src/com/javarush/test/level37/lesson04/big01/FactoryProducer.java: -------------------------------------------------------------------------------- 1 | package com.javarush.test.level37.lesson04.big01; 2 | 3 | import com.javarush.test.level37.lesson04.big01.female.FemaleFactory; 4 | import com.javarush.test.level37.lesson04.big01.male.MaleFactory; 5 | 6 | /** 7 | * Created by Dmitry on 26.03.2016. 8 | */ 9 | public class FactoryProducer 10 | { 11 | public static AbstractFactory getFactory(HumanFactoryType type) 12 | { 13 | switch (type){ 14 | case MALE: 15 | return new MaleFactory(); 16 | case FEMALE: 17 | return new FemaleFactory(); 18 | } 19 | return null; 20 | } 21 | 22 | public static enum HumanFactoryType 23 | { 24 | MALE, FEMALE 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /src/com/javarush/test/level37/lesson04/big01/Human.java: -------------------------------------------------------------------------------- 1 | package com.javarush.test.level37.lesson04.big01; 2 | 3 | /** 4 | * Created by Dmitry on 26.03.2016. 5 | */ 6 | public interface Human 7 | { 8 | } 9 | -------------------------------------------------------------------------------- /src/com/javarush/test/level37/lesson04/big01/Solution.java: -------------------------------------------------------------------------------- 1 | package com.javarush.test.level37.lesson04.big01; 2 | 3 | public class Solution { 4 | public static void main(String[] args) { 5 | AbstractFactory factory = FactoryProducer.getFactory(FactoryProducer.HumanFactoryType.FEMALE); 6 | useFactory(factory); 7 | 8 | factory = FactoryProducer.getFactory(FactoryProducer.HumanFactoryType.MALE); 9 | useFactory(factory); 10 | /* 11 | Woman{} 12 | KidGirl{} 13 | TeenGirl{} 14 | Man{} 15 | KidBoy{} 16 | TeenBoy{} 17 | */ 18 | } 19 | 20 | public static void useFactory(AbstractFactory factory) { 21 | System.out.println(factory.getPerson(99)); 22 | System.out.println(factory.getPerson(4)); 23 | System.out.println(factory.getPerson(15)); 24 | } 25 | 26 | } 27 | -------------------------------------------------------------------------------- /src/com/javarush/test/level37/lesson04/big01/female/FemaleFactory.java: -------------------------------------------------------------------------------- 1 | package com.javarush.test.level37.lesson04.big01.female; 2 | 3 | import com.javarush.test.level37.lesson04.big01.AbstractFactory; 4 | import com.javarush.test.level37.lesson04.big01.Human; 5 | 6 | /** 7 | * Created by Dmitry on 26.03.2016. 8 | */ 9 | public class FemaleFactory implements AbstractFactory 10 | { 11 | public Human getPerson(int age) 12 | { 13 | if(age<=KidGirl.MAX_AGE){ 14 | return new KidGirl(); 15 | }else if(age<=TeenGirl.MAX_AGE){ 16 | return new TeenGirl(); 17 | }else 18 | return new Woman(); 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /src/com/javarush/test/level37/lesson04/big01/female/KidGirl.java: -------------------------------------------------------------------------------- 1 | package com.javarush.test.level37.lesson04.big01.female; 2 | 3 | import com.javarush.test.level37.lesson04.big01.Human; 4 | 5 | /** 6 | * Created by Dmitry on 26.03.2016. 7 | */ 8 | public class KidGirl implements Human 9 | { 10 | public static final int MAX_AGE = 12; 11 | @Override 12 | public String toString() 13 | { 14 | return this.getClass().getSimpleName() + "{}"; 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /src/com/javarush/test/level37/lesson04/big01/female/TeenGirl.java: -------------------------------------------------------------------------------- 1 | package com.javarush.test.level37.lesson04.big01.female; 2 | 3 | import com.javarush.test.level37.lesson04.big01.Human; 4 | 5 | /** 6 | * Created by Dmitry on 26.03.2016. 7 | */ 8 | public class TeenGirl implements Human 9 | { 10 | public static final int MAX_AGE = 19; 11 | 12 | @Override 13 | public String toString() 14 | { 15 | return this.getClass().getSimpleName() + "{}"; 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /src/com/javarush/test/level37/lesson04/big01/female/Woman.java: -------------------------------------------------------------------------------- 1 | package com.javarush.test.level37.lesson04.big01.female; 2 | 3 | import com.javarush.test.level37.lesson04.big01.Human; 4 | 5 | /** 6 | * Created by Dmitry on 26.03.2016. 7 | */ 8 | public class Woman implements Human 9 | { 10 | @Override 11 | public String toString() 12 | { 13 | return this.getClass().getSimpleName() + "{}"; 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /src/com/javarush/test/level37/lesson04/big01/male/KidBoy.java: -------------------------------------------------------------------------------- 1 | package com.javarush.test.level37.lesson04.big01.male; 2 | 3 | import com.javarush.test.level37.lesson04.big01.Human; 4 | 5 | /** 6 | * Created by Dmitry on 26.03.2016. 7 | */ 8 | public class KidBoy implements Human 9 | { 10 | public static final int MAX_AGE = 12; 11 | @Override 12 | public String toString() 13 | { 14 | return this.getClass().getSimpleName() + "{}"; 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /src/com/javarush/test/level37/lesson04/big01/male/MaleFactory.java: -------------------------------------------------------------------------------- 1 | package com.javarush.test.level37.lesson04.big01.male; 2 | 3 | import com.javarush.test.level37.lesson04.big01.AbstractFactory; 4 | import com.javarush.test.level37.lesson04.big01.Human; 5 | 6 | /** 7 | * Created by Dmitry on 26.03.2016. 8 | */ 9 | public class MaleFactory implements AbstractFactory 10 | { 11 | public Human getPerson(int age) 12 | { 13 | if(age<=KidBoy.MAX_AGE){ 14 | return new KidBoy(); 15 | }else if(age<=TeenBoy.MAX_AGE){ 16 | return new TeenBoy(); 17 | }else 18 | return new Man(); 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /src/com/javarush/test/level37/lesson04/big01/male/Man.java: -------------------------------------------------------------------------------- 1 | package com.javarush.test.level37.lesson04.big01.male; 2 | 3 | import com.javarush.test.level37.lesson04.big01.Human; 4 | 5 | /** 6 | * Created by Dmitry on 26.03.2016. 7 | */ 8 | public class Man implements Human 9 | { 10 | @Override 11 | public String toString() 12 | { 13 | return this.getClass().getSimpleName() + "{}"; 14 | } 15 | 16 | } 17 | -------------------------------------------------------------------------------- /src/com/javarush/test/level37/lesson04/big01/male/TeenBoy.java: -------------------------------------------------------------------------------- 1 | package com.javarush.test.level37.lesson04.big01.male; 2 | 3 | import com.javarush.test.level37.lesson04.big01.Human; 4 | 5 | /** 6 | * Created by Dmitry on 26.03.2016. 7 | */ 8 | public class TeenBoy implements Human 9 | { 10 | public static final int MAX_AGE = 19; 11 | 12 | @Override 13 | public String toString() 14 | { 15 | return this.getClass().getSimpleName() + "{}"; 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /src/com/javarush/test/level37/lesson06/task01/Solution.java: -------------------------------------------------------------------------------- 1 | package com.javarush.test.level37.lesson06.task01; 2 | 3 | import java.util.concurrent.ConcurrentSkipListMap; 4 | 5 | /* Найти класс по описанию 6 | 1. Реализует интерфейс Map 7 | 2. Используется при работе с трэдами 8 | 3. Неблокирущая версия списка с пропусками, который адаптирован для хеш-таблицы. 9 | Про список с пропусками читать в дополнительном материале к этой лекци 10 | */ 11 | public class Solution { 12 | public static void main(String[] args) { 13 | System.out.println(getExpectedClass()); 14 | } 15 | 16 | public static Class getExpectedClass() { 17 | Class c = ConcurrentSkipListMap.class; 18 | return c; 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /src/com/javarush/test/level37/lesson10/big01/HashMapReflectionHelper.java: -------------------------------------------------------------------------------- 1 | package com.javarush.test.level37.lesson10.big01; 2 | 3 | import java.lang.reflect.InvocationTargetException; 4 | import java.lang.reflect.Method; 5 | import java.util.HashMap; 6 | 7 | public class HashMapReflectionHelper { 8 | public static T callHiddenMethod(HashMap map, String methodName) { 9 | try { 10 | Method method = map.getClass().getDeclaredMethod(methodName); 11 | method.setAccessible(true); 12 | return (T) method.invoke(map); 13 | } catch (NoSuchMethodException | InvocationTargetException | IllegalAccessException ignored) { 14 | } 15 | return null; 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /src/com/javarush/test/level37/lesson10/task01/Solution.java: -------------------------------------------------------------------------------- 1 | package com.javarush.test.level37.lesson10.task01; 2 | 3 | import java.util.Arrays; 4 | import java.util.List; 5 | 6 | /* Давно забытый Array 7 | Реализуйте логику метода getData так, чтобы main отработал без исключений 8 | Остальной код не менять 9 | */ 10 | public class Solution { 11 | public static void main(String[] args) { 12 | List numbers = Arrays.asList(1, 2, 3); 13 | addDataToList(numbers, getData()); 14 | System.out.println(numbers); 15 | } 16 | 17 | public static Number[] getData() { 18 | return new Number[0]; 19 | } 20 | 21 | public static void addDataToList(List list, Number... data) { 22 | for (Number number : data) { 23 | list.add(number); 24 | } 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /src/com/javarush/test/level38/lesson04/home01/NameChecker.java: -------------------------------------------------------------------------------- 1 | package com.javarush.test.level38.lesson04.home01; 2 | 3 | public class NameChecker { 4 | private static final int MAX_NUMBER_OF_CHARACTERS = 100500; 5 | public static int getNumberOfCharacters(String name) throws Exception 6 | { 7 | if (name == null) 8 | throw new NameIsNullException(); 9 | else if (name.isEmpty()) 10 | throw new NameIsEmptyException(); 11 | 12 | int length = name.length(); 13 | if (length > MAX_NUMBER_OF_CHARACTERS) 14 | throw new Exception("Слишком длинное имя"); 15 | return length; 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /src/com/javarush/test/level38/lesson04/home01/NameIsEmptyException.java: -------------------------------------------------------------------------------- 1 | package com.javarush.test.level38.lesson04.home01; 2 | 3 | public class NameIsEmptyException extends Exception{ 4 | } 5 | -------------------------------------------------------------------------------- /src/com/javarush/test/level38/lesson04/home01/NameIsNullException.java: -------------------------------------------------------------------------------- 1 | package com.javarush.test.level38.lesson04.home01; 2 | 3 | public class NameIsNullException extends Exception{ 4 | } 5 | -------------------------------------------------------------------------------- /src/com/javarush/test/level38/lesson04/task01/VeryComplexClass.java: -------------------------------------------------------------------------------- 1 | package com.javarush.test.level38.lesson04.task01; 2 | 3 | /* Проверяемые исключения (checked exception) 4 | Напиши реализацию метода veryComplexMethod(). 5 | Он должен всегда кидать какое-нибудь проверяемое исключение. 6 | Кинуть исключение (throw) явно нельзя. 7 | */ 8 | 9 | public class VeryComplexClass { 10 | public void veryComplexMethod() throws Exception { 11 | int q = 1/0; 12 | //напишите тут ваш код 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /src/com/javarush/test/level38/lesson06/home02/Connection.java: -------------------------------------------------------------------------------- 1 | package com.javarush.test.level38.lesson06.home02; 2 | 3 | public interface Connection { 4 | void connect() throws WrongDataException, ConnectionException; 5 | void write(Object data) throws WrongDataException, ConnectionException; 6 | Object read() throws WrongDataException, ConnectionException; 7 | void disconnect() throws WrongDataException, ConnectionException; 8 | } 9 | -------------------------------------------------------------------------------- /src/com/javarush/test/level38/lesson06/home02/ConnectionException.java: -------------------------------------------------------------------------------- 1 | package com.javarush.test.level38.lesson06.home02; 2 | 3 | public class ConnectionException extends Exception { 4 | public ConnectionException() { 5 | super(); 6 | } 7 | public ConnectionException(String message) { 8 | super(message); 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /src/com/javarush/test/level38/lesson06/home02/ConnectionMock.java: -------------------------------------------------------------------------------- 1 | package com.javarush.test.level38.lesson06.home02; 2 | 3 | public class ConnectionMock implements Connection { 4 | @Override 5 | public void connect() throws WrongDataException, ConnectionException { 6 | } 7 | 8 | @Override 9 | public void write(Object data) throws WrongDataException, ConnectionException { 10 | } 11 | 12 | @Override 13 | public Object read() throws WrongDataException, ConnectionException { 14 | return null; 15 | } 16 | 17 | @Override 18 | public void disconnect() throws WrongDataException, ConnectionException { 19 | 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /src/com/javarush/test/level38/lesson06/home02/SolutionException.java: -------------------------------------------------------------------------------- 1 | package com.javarush.test.level38.lesson06.home02; 2 | 3 | public class SolutionException extends Exception { 4 | public SolutionException() { 5 | super(); 6 | } 7 | public SolutionException(String message) { 8 | super(message); 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /src/com/javarush/test/level38/lesson06/home02/WrongDataException.java: -------------------------------------------------------------------------------- 1 | package com.javarush.test.level38.lesson06.home02; 2 | 3 | public class WrongDataException extends Exception { 4 | public WrongDataException() { 5 | super(); 6 | } 7 | public WrongDataException(String message) { 8 | super(message); 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /src/com/javarush/test/level38/lesson10/home01/IncorrectAccount.java: -------------------------------------------------------------------------------- 1 | package com.javarush.test.level38.lesson10.home01; 2 | 3 | public class IncorrectAccount { 4 | @LongPositive 5 | private String amountString; 6 | } -------------------------------------------------------------------------------- /src/com/javarush/test/level38/lesson10/home01/JavaRushBankAccount.java: -------------------------------------------------------------------------------- 1 | package com.javarush.test.level38.lesson10.home01; 2 | 3 | public class JavaRushBankAccount { 4 | private String ownerName; 5 | 6 | @LongPositive 7 | public long amount; 8 | 9 | public JavaRushBankAccount(String ownerName) { 10 | this.ownerName = ownerName; 11 | } 12 | 13 | public long getAmount() { 14 | return amount; 15 | } 16 | 17 | public void setAmount(long amount) { 18 | this.amount = amount; 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /src/com/javarush/test/level38/lesson10/home01/LongPositive.java: -------------------------------------------------------------------------------- 1 | package com.javarush.test.level38.lesson10.home01; 2 | 3 | import java.lang.annotation.ElementType; 4 | import java.lang.annotation.Retention; 5 | import java.lang.annotation.RetentionPolicy; 6 | import java.lang.annotation.Target; 7 | 8 | @Target(value = ElementType.FIELD) 9 | @Retention(value = RetentionPolicy.RUNTIME) 10 | public @interface LongPositive { 11 | } 12 | -------------------------------------------------------------------------------- /src/com/javarush/test/level38/lesson10/home02/Author.java: -------------------------------------------------------------------------------- 1 | package com.javarush.test.level38.lesson10.home02; 2 | 3 | public @interface Author { 4 | //напиши свой код 5 | String value(); 6 | Position position() default Position.OTHER; 7 | 8 | } 9 | -------------------------------------------------------------------------------- /src/com/javarush/test/level38/lesson10/home02/Changelog.java: -------------------------------------------------------------------------------- 1 | package com.javarush.test.level38.lesson10.home02; 2 | 3 | import java.lang.annotation.Retention; 4 | import java.lang.annotation.RetentionPolicy; 5 | 6 | 7 | @Retention(value= RetentionPolicy.RUNTIME) 8 | public @interface Changelog { 9 | //напиши свой код 10 | Revision[] value(); 11 | } 12 | -------------------------------------------------------------------------------- /src/com/javarush/test/level38/lesson10/home02/Date.java: -------------------------------------------------------------------------------- 1 | package com.javarush.test.level38.lesson10.home02; 2 | 3 | public @interface Date { 4 | //напиши свой код 5 | int year(); 6 | int month(); 7 | int day(); 8 | int hour(); 9 | int minute(); 10 | int second(); 11 | } 12 | -------------------------------------------------------------------------------- /src/com/javarush/test/level38/lesson10/home02/Position.java: -------------------------------------------------------------------------------- 1 | package com.javarush.test.level38.lesson10.home02; 2 | 3 | public enum Position { 4 | JUNIOR, 5 | MIDDLE, 6 | SENIOR, 7 | OTHER 8 | } 9 | -------------------------------------------------------------------------------- /src/com/javarush/test/level38/lesson10/home02/Revision.java: -------------------------------------------------------------------------------- 1 | package com.javarush.test.level38.lesson10.home02; 2 | 3 | public @interface Revision { 4 | //напиши свой код 5 | int revision(); 6 | Date date(); 7 | Author[] authors() default {}; 8 | String comment() default ""; 9 | } 10 | --------------------------------------------------------------------------------