Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Java программирование > Общие вопросы по Java, Java SE, Kotlin
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 22.03.2010, 05:40   #1
Olejik
Форумчанин
 
Регистрация: 02.06.2009
Сообщений: 218
По умолчанию обьект в обьект...

Здравствуйте, нужно зделать мне одну программку, сейчас все разложу по полочкам
у нас есть главный класс: Base, интерфейс People и классы Man и Woman.
Суть такова, нужно вносить так сказать в базу людей, как вы поняли мужчин и женщин. При внесении мужчины, мы записываем 2 параметра:имя и возраст, а когда ину то имя и цвет волос. Потом надо это все вывести на экран одим методом: show. Сейчас напишу пример как должно примерно все выглядеть:
Код:
m1 = new Man("Ivan",21);
m2 = new Man("Sasha",16);
w = new Woman("Ira","Black");

Base b = new Base();
b.add(m1);
b.add(m2);
b.add(w);
b.show();
Ну вот, преподаватель еще сказал, что toString у класса Man и Woman будут разными (ну это я понял почему). Мой вопрос заключается в чом, вот вообще что делать на этапе add? Я не знаю какой обьект создавать(b), т.е. что в нем должно содержаться, чтобы потом вывести всех людей. Дайте толчок в работе
вот код моей программы:
Код:
public class Base {
	
	Base() {
		
	}
	
	public Base add(Object o) {
		Base h = new Base();
		return h;
	}
	
	public static void main(String[] args) {
		People m1 = new Man("asdas", 4);
		People w1 = new Woman("Alisa","black");
		System.out.println(m1);
	}
}
Код:
import java.util.ArrayList;

public class Man  implements People{
	private class MAN
	{
		String name;
		int hight;
	}

	ArrayList<MAN> man;
	
	Man(String s, int i)
	{
		MAN buf = new MAN();
		man=new ArrayList<MAN>();
		buf.name=s;
		buf.hight =i;
		man.add(buf);
	}
	
	public String toString()
	{
		String s="";
		s += "Name \t hight\n";
		for(int i=0;i<man.size();i++)
		{
			s+=man.get(i).name+"\t " +man.get(i).hight+"\n";
		}
		return s;
	}
}
Код:
import java.util.ArrayList;

public class Woman  implements People{

	ArrayList<WOMAN> woman;
	
	private class WOMAN {
		String name;
		String cwet;
	}
	
	Woman(String name, String cwet) {
		WOMAN buf = new WOMAN();
		woman = new ArrayList<WOMAN>();
		buf.name = name;
		buf.cwet = cwet;
		woman.add(buf);
	}
}
Плин, интэрфейс я не знаю, нужен тут или нет, я что то мутил там и меня дернуло в какой то момент на счет интэрфейса, а сейчас не знаю, нужен ли или нет.
P.S. извините за название темы, не знал как ее назвать.
Olejik вне форума Ответить с цитированием
Старый 22.03.2010, 14:48   #2
Carbon
JAVA BEAN
Участник клуба
 
Аватар для Carbon
 
Регистрация: 22.04.2007
Сообщений: 1,329
По умолчанию

типа этого?
Код:
import java.util.ArrayList;


interface Person
{
	String toString();		
}

class Man implements Person
{
	Man( String name, int age )
	{
		sName = name;
		nAge = age;
	}
	
	public String toString()
	{
		return "name: \"" + sName + "\" age: " + String.valueOf( nAge );
	}
	
	public String getName()
	{
		return sName;
	}
	
	public int getAge()
	{
		return nAge;
	}
	
	private String sName;
	private int nAge;
}

class Woman implements Person
{
	Woman( String name, String haircolor )
	{
		sName = name;
		sHairColor = haircolor;
	}
	
	public String toString()
	{
		return "name: \"" + sName + "\" color: \"" + String.valueOf( sHairColor ) + "\"";
	}
	
	public String getName()
	{
		return sName;
	}
	
	public String getHairColor()
	{
		return sHairColor;
	}
	
	private String sName;
	private String sHairColor;
}

class Base
{
	public Base()
	{
		vList = new ArrayList< Person >();
	}
	
	public void add( Person person )
	{
		vList.add( person );
	}
	
	public void remove( Person person )
	{
		vList.remove( person );
	}
	
	public void clear( Person person )
	{
		vList.clear();
	}
	
	public void show()
	{
		for ( int i = 0, i_end = vList.size(); i < i_end; ++i )
			System.out.println( vList.get( i ).toString() );
	}
	
	private ArrayList< Person > vList;
}


public class Entry
{
	
	

	public static void main(String[] args)
	{
		Base b = new Base();
		
		b.add( new Man( "111", 1 ) );
		b.add( new Man( "121", 2 ) );
		b.add( new Man( "131", 3 ) );
		b.add( new Man( "141", 4 ) );
		b.add( new Woman( "1", "1" ) );
		b.add( new Woman( "2", "2" ) );
		b.show();
	}

}
Carbon вне форума Ответить с цитированием
Старый 22.03.2010, 16:23   #3
Olejik
Форумчанин
 
Регистрация: 02.06.2009
Сообщений: 218
По умолчанию

да, но здесь все что у Вас реализованно в классе Entry, должно быть реализованно в классе Base. Ща попробую разобраться... вот только опять остается у меня догадкой как данные сохраняются, в особенности меня интересуют эти места:
Код:
public Base()
	{
		vList = new ArrayList< Person >();
	}
Код:
interface Person
{
	String toString();		
}
Мы типа создаем обьект типа Person, а там кроме toString'a ничего больше нету
и еще, вот это место
Код:
	public void add( Person person )
	{
		vList.add( person );
	}
т.к. мы имеем 2 разных обьекта: стринг+инт и стринг+стринг, то значит vList надо как то вытаскивать из классов мэн и вумэн? Из это можно зделать, что мы без интэрфейса не обойдемся, для мужиков и женщин делаем два раздных add. Верно?

Последний раз редактировалось Olejik; 22.03.2010 в 16:42.
Olejik вне форума Ответить с цитированием
Старый 22.03.2010, 18:33   #4
Olejik
Форумчанин
 
Регистрация: 02.06.2009
Сообщений: 218
По умолчанию

Carbon, я Ваш пример вставил... и он работает, я думал Вы это... набросочки зделали... )
спасибо огромное, ща буду вдупливать, что, почему и как..хотя и так все ясно )
еще раз спасибо )
Olejik вне форума Ответить с цитированием
Старый 22.03.2010, 21:54   #5
alexinspir
Новичок
Джуниор
 
Аватар для alexinspir
 
Регистрация: 26.08.2008
Сообщений: 1,010
По умолчанию

Цитата:
Сообщение от Carbon Посмотреть сообщение
Код:
interface Person
{
	String toString();		
}
Позвольте спросить, а зачем нужно декларировать toString в интерфейсе? мол чтобы компилятор не дал забыть его реализовать?

я бы интерфейс сделал таким:

Код:
//если енам в отдельном файле определять, то модификатор доступа public, иначе без модификатора
public enum EColor{
	GREEN,
	GREY,
	BLUE,
	DARK;
}

public interface People{
	abstract public void setName(String name);
	
	abstract public String getName();
	
	abstract public void setAge(int age);
	
	abstract public int getAge();
	
	abstract public void setEyesColor(EColor ecolor);
	
	abstract public EColor getEyesColor();

	//other methods...
}
ромик0: Cколько получают здешние модераторы?
pu4koff: У модераторов сдельная оплата труда. Выдал предупреждение - плюс к премии. Выдал бан - лучший модератор месяца со всеми вытекающими.
alexinspir вне форума Ответить с цитированием
Старый 22.03.2010, 22:18   #6
Olejik
Форумчанин
 
Регистрация: 02.06.2009
Сообщений: 218
По умолчанию

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

Последний раз редактировалось Olejik; 22.03.2010 в 22:26.
Olejik вне форума Ответить с цитированием
Старый 22.03.2010, 22:23   #7
alexinspir
Новичок
Джуниор
 
Аватар для alexinspir
 
Регистрация: 26.08.2008
Сообщений: 1,010
По умолчанию

Цитата:
Сообщение от Olejik Посмотреть сообщение
а у нас преподователь к этому придирается, во всех программ с интерфейсами он просил ту стринг
я сам не понимаю, хотя как я прочитал вывод можно зделать своим форматом, это в + )
Передайте вашему преподавателю что он не прав)
любой класс, реализующий любой интерфейс(и не реализующий интерфейсов вообще), наследует методы класса Object, который имеет метод public String toString(); который без проблем можно переопределить.
ромик0: Cколько получают здешние модераторы?
pu4koff: У модераторов сдельная оплата труда. Выдал предупреждение - плюс к премии. Выдал бан - лучший модератор месяца со всеми вытекающими.
alexinspir вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
СОМ технологии в Делфи. Подключить нужный обьект z-wer Общие вопросы Delphi 10 14.03.2010 17:30
Реализовать обьект в Delphi, который содержит в качестве поля двумерный массив данных. Nastena_12_ Помощь студентам 0 06.12.2009 22:17
Динамически созданный обьект, процедуры heart Общие вопросы Delphi 3 09.05.2009 17:32
Не могу создать обьект mrandrey Общие вопросы Delphi 6 04.06.2007 16:04