2013-06-10 2 views
4

Я написал программу преобразования времени (т. Е. Секунды, минуты и минуты и т. Д.), Но позже я обнаружил, что эти классы выполняют аналогичную операцию. Есть ли способ связать эти классы, если да, пожалуйста, дайте некоторое решение и предложение. Вот мой код ....Как связать классы в java?

Second.java

import java.util.concurrent.*; 

public class Second { 

    private long secondsValue; 

    public Second() { 
     secondsValue = 0L; 
    } 

    public Second(String from, String to, long unitValue) { 
     unitSelection(from, to, unitValue); 
    } 

    private void convertSecondToMinute(long unitValue) { 
     unitValue = TimeUnit.MINUTES.convert(unitValue, TimeUnit.SECONDS); 
     secondsValue = unitValue; 
    } 

    private void convertSecondToHour(long unitValue) { 
     unitValue = TimeUnit.HOURS.convert(unitValue, TimeUnit.SECONDS); 
     secondsValue = unitValue; 
    } 

    private void convertSecondToDay(long unitValue) { 
     unitValue = TimeUnit.DAYS.convert(unitValue, TimeUnit.SECONDS); 
     secondsValue = unitValue; 
    } 

    private void convertSecondToWeek(long unitValue) { 
     unitValue = unitValue/60/60/24/7; 
     secondsValue = unitValue; 
    } 

    public long getSeconds() { 
     return secondsValue; 
    } 

    private void unitSelection(String from, String to, 
      long unitValue) { 
     if(from.equalsIgnoreCase("second")) { 
      if(to.equalsIgnoreCase("minute")) { 
       convertSecondToMinute(unitValue); 
      } 
      else if(to.equalsIgnoreCase("hour")) { 
       convertSecondToHour(unitValue);    
      } 
      else if(to.equalsIgnoreCase("day")) { 
       convertSecondToDay(unitValue); 
      } 
      else if(to.equalsIgnoreCase("week")) { 
       convertSecondToWeek(unitValue); 
      } 
      else { 
       System.out.println("Invalid argument...!"); 
      } 
     } 
    } 
} 

Minute.java

import java.util.concurrent.TimeUnit; 

public class Minute { 
    private long unitMinute; 

    public Minute() { 
     unitMinute = 0L; 
    } 
    public Minute(String from, String to, 
      long unitValue) { 
     unitSelection(from, to, unitValue); 
    } 

    private void convertMinuteToSecond(long unitValue) { 
     unitValue = TimeUnit.SECONDS.convert(unitValue, TimeUnit.MINUTES); 
     unitMinute = unitValue; 
    } 
    private void convertMinuteToHour(long unitValue) { 
     unitValue = TimeUnit.HOURS.convert(unitValue, TimeUnit.MINUTES); 
     unitMinute = unitValue; 
    } 
    private void convertMinuteToDay(long unitValue) { 
     unitValue = TimeUnit.DAYS.convert(unitValue, TimeUnit.MINUTES); 
     unitMinute = unitValue; 
    } 
    private void convertMinuteToWeek(long unitValue) { 
     long value = unitValue /60/24/7; 
     unitMinute = value; 
    } 
    public long getUnitMinute() { 
     return unitMinute; 
    } 
    private void unitSelection(String from, String to, 
      long unitValue) { 
     if(from.equalsIgnoreCase("minute")) { 
      if(to.equalsIgnoreCase("second")) { 
       convertMinuteToSecond(unitValue); 
      } 
      else if(to.equalsIgnoreCase("hour")) { 
       convertMinuteToHour(unitValue);    
      } 
      else if(to.equalsIgnoreCase("day")) { 
       convertMinuteToDay(unitValue); 
      } 
      else if(to.equalsIgnoreCase("week")) { 
       convertMinuteToWeek(unitValue); 
      } 
      else { 
       System.out.println("Invalid argument...!"); 
      } 
     } 
    } 
} 
+0

создайте один класс с двумя переменными 'secondsValue' и' unitMinute'. –

+0

Вы хотите, чтобы вы использовали методы из другого класса в другой? –

+0

http://codereview.stackexchange.com – pinkpanther

ответ

5

Лучший способ улучшить ваш код, чтобы удалить все классы и вместо этого используйте TimeUnit.

TimeUnit имеет всю эту функциональность (и многое другое) и поставляется с JDK.
Не изобретайте велосипед.

+0

Это действительно лучшая рекомендация относительно того, как справиться с этим делом, и общая замечательная рекомендация. В java у вас есть огромный список доступных инструментов в готовой версии, уже включенной в JDK. Прежде чем писать свой собственный код, найдите, доступна ли функция в JDK или в виде стабильной библиотеки. – chamakits

+0

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

+1

Ваш вопрос был целиком связан с преобразованием единицы времени. Ничего больше. Вопрос о преобразовании других типов устройств в sbout был бы другим вопросом. – Bohemian

0

Когда вы говорите, что «родственная» - очень широкая тема. Однако правильный способ начать - использовать механизм java Packaging, чтобы связать классы на самом высоком уровне. Вы можете управлять своим кодом (если возможно) с помощью Inheritance and Polymorphism. Как предложил @Bohemian, используйте существующие java-библиотеки до тех пор, пока вы не сделаете новый и не сделаете это для обучения.

0

Я вижу 2 варианта:

1. Повторно определяют как в одном классе:, которые предполагают использование стандартного универсального значения (число миллисекунд, например), и предложить то, что это означает, что в различные меры, такие как минуты, часы, ..etc

class Duration 
{ 
    private long secondsValue; 

    public Duration() { 
     secondsValue = 0L; 
    } 

    public Duration(String format, long value) { 
     if (format.equals("SECONDS")) secondsValue = value; 
     else if (format.equals("MINUTES")) secondsValue = value*60; 
     else if (format.equals("HOURS")) secondsValue = value*60*60; 
     else if (format.equals("DAYS")) secondsValue = value*60*60*24; 
     else if (format.equals("WEEKS")) secondsValue = value*60*60*24*7; 
    } 

    public long asMinutes() { 
     return value/60; 
    } 

    public long asHours() { 
     return value/(60*60); 
    } 

    public long asDays() { 
     return value/(60*60*24); 
    } 

    public long asWeeks() { 
     return unitValue/(60*60*24*7); 
    } 

    public long asSeconds() { 
     return secondsValue; 
    } 
} 

2. использование преобразователя утилита класс: нравится, как вы используете TimeUnit.MINUTES.convert(unitValue, TimeUnit.SECONDS); для преобразования секунд до нескольких минут

Смежные вопросы