реализация и интерфейсы - PullRequest
       1

реализация и интерфейсы

0 голосов
/ 25 февраля 2012

Я пытался искать учебники и видео, и я понимаю, что делает реализация, хотя я немного запутался в том, как можно реализовать класс из библиотеки Java. В моей домашней работе я предполагаю использовать класс DataSet и сделать так, чтобы он принимал сопоставимые объекты. Предполагается, что программа записывает значения Min и Max в зависимости от объектов, в этом случае я предполагаю использовать строки. Я не был уверен, нужны ли мне какие-либо классы для реализации интерфейса Comparable, поэтому я сделал два класса на всякий случай, если мне это нужно. Мой реальный вопрос: как мне на самом деле включить переменную String в класс тестера, чтобы фактически прочитать и сравнить объект с другим? заранее спасибо.

public class Word implements Comparable
{
private String str;

public Word()
{
    str = null;
}

public Word(String s)
{
    str = s;
}

 public int compareTo(Object other)
 {
    String n = (String) other;
    return str.compareTo(n);
 }

}

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

public class String implements Comparable
{
    public String s;

    public String()
    {
    s = null;
    }

public String(String str)
{
    s = str;
}
public int compareTo(Object other)
{
    String n = (String) other;
   return s.compareTo(n);
}
}


public interface Comparable
{
public int compareTo(Object other);
}


public class DataSet
{
 private Object maximum;
 private Object least;
 private Comparable compare;
 private int count;

 public DataSet(Comparable s)
 {
   compare = s;
 }

 public void add(Object x)
 {

   if(count == 0)
   least = x;
   if(count == 0 || compare.compareTo(x) >=0)
   maximum = x;
   else if(compare.compareTo(x) <0)
   least = x;
   count++;

 }
 public Object getMaximum()
 {
  return maximum;
 }

 public Object getLeast()
 {
   return least;
 }

 }


public class DataSetTester
{
   public static void main(String[] args)
  {
  Comparable n = new Word("sand");
  DataSet data = new DataSet(n);


  data.add(new Word(man));



  System.out.println("Maximum Word: " + data.getMaximum());
  System.out.println("Least Word: " + data.getLeast());
 }
}

1 Ответ

0 голосов
/ 25 февраля 2012

Интерфейс - это контракт, который показывает, что ваш класс содержит все методы, реализованные в интерфейсе.В этом случае CompareTo(object other).Класс String уже реализует сопоставимый интерфейс, поэтому вам не нужен собственный класс.Я думаю, что ваш класс набора данных должен выглядеть примерно так:

public class DataSet<T implements Comparable>
{
 private T maximum;
 private T least;
 private T count;


 public void add(T x)
 {

   if(count == 0){
     least = x;
     maximum = x;
   }
   else if(least.compareTo(x) > 0)
     least = x;
   else if(maximum.compareTo(x) < 0)
     maximum = x;
   count++;
 }

 public T getMaximum()
 {
  return maximum;
 }

 public T getLeast()
 {
   return least;
 }

 }

T - универсальный тип, и в вашем случае это должно быть String. Вот как вы создаете новый набор данных: DataSet<String> ds = new DataSet<String>;

...