Skip to content

Instantly share code, notes, and snippets.

@fermopili
Created May 18, 2017 08:30
Show Gist options
  • Save fermopili/c5b31f553d39fcde706c8d8c634fcd53 to your computer and use it in GitHub Desktop.
Save fermopili/c5b31f553d39fcde706c8d8c634fcd53 to your computer and use it in GitHub Desktop.
com.javarush.task.task35.task3510 Вход воспрещен
package com.javarush.task.task35.task3510;
public class Cat {
protected String name;
public Cat(String name) {
this.name = name;
}
@Override
public String toString() {
return "Кот " + name;
}
}
package com.javarush.task.task35.task3510;
public class Dog {
protected String name;
public Dog(String name) {
this.name = name;
}
@Override
public String toString() {
return "Пес " + name;
}
}
package com.javarush.task.task35.task3510;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
/*
Вход воспрещен!
*/
public class House<T>
{
private List<T> residents = new ArrayList ( );
public void enter(T resident)
{
residents.add (resident);
// checkConflicts ( );
}
public void leave(T resident)
{
residents.remove (resident);
}
/*
private void checkConflicts()
{
boolean conflict = false;
for (T resident : residents)
{
if (resident instanceof Dog)
{
conflict = true;
}
}
if (conflict)
{
Iterator iterator = residents.iterator ( );
while (iterator.hasNext ( ))
{
Object resident = iterator.next ( );
if (resident instanceof Cat)
{
iterator.remove ( );
}
}
}
}
*/
@Override
public String toString()
{
StringBuilder builder = new StringBuilder ( );
builder.append ("В доме находятся:\n");
for (Object resident : residents)
{
builder.append (resident.toString ( )).append ("\n");
}
return builder.toString ( );
}
public static void main(String[] args)
{
Dog bruno = new Dog ("Bruno");
Puppy larsik = new Puppy ("Larsik");
Cat barsik = new Cat ("Barsik");
Kitten keksik = new Kitten ("Keksik");
House dogHouse = new House ( );
dogHouse.enter (bruno);
dogHouse.enter (larsik);
// dogHouse.enter (barsik);
System.out.println (dogHouse.toString ( ));
House catHouse = new House ( );
catHouse.enter (barsik);
catHouse.enter (keksik);
// catHouse.enter (bruno);
System.out.println (catHouse.toString ( ));
}
}
package com.javarush.task.task35.task3510;
public class Kitten extends Cat {
public Kitten(String name) {
super(name);
}
@Override
public String toString() {
return "Котенок " + name;
}
}
package com.javarush.task.task35.task3510;
public class Puppy extends Dog {
public Puppy(String name) {
super(name);
}
@Override
public String toString() {
return "Щенок " + name;
}
}
taskKey="com.javarush.task.task35.task3510"
Вход воспрещен!
Проанализируй классы в задаче.
В методе main создано два дома: один для котов и один для собак.
Однако сейчас, когда в дом для кошек заходит собака, возникает конфликт и все находящиеся в нем коты вынуждены покинуть дом (метод checkConflicts).
Помоги котам защитить свой дом от посторонних, а так же не позволить им случайно заходить в дом для собак.
Для этого параметризируй House типом T и внеси соответствующие правки в реализацию класса.
Метод main не принимает участие в тестировании.
Требования:
1. Класс House должен быть параметризован с типом T.
2. Поле residents в классе House должно быть параметризовано типом T.
3. Метод enter в классе House должен принимать объект типа T.
4. Метод leave в классе House должен принимать объект типа T.
5. Метод checkConflicts в классе House больше не нужен и должен быть удален.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment