Модераторы: LSD, AntonSaburov

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> WEB технологии в J и D7. сравнил :(, ну как-ж так? 
:(
    Опции темы
AntonSaburov
Дата 14.9.2004, 18:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Штурман
****


Профиль
Группа: Модератор
Сообщений: 5658
Регистрация: 2.7.2002
Где: Санкт-Петербург

Репутация: 51
Всего: 118



Во-первых, я уже занес мышку над предупреждениями - остывайте smile.gif

Во-вторых, никто не мешает возвращать объект, в котором будет все, что душе угодно.
Причем это гораздо легче расширяется, чем переписывать десяток или два функций, которые теперь должны возвращать другие параметры.
PM MAIL WWW ICQ   Вверх
Sleepy_PIP
Дата 14.9.2004, 19:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 512
Регистрация: 30.6.2004
Где: Moscow

Репутация: 4
Всего: 12



Цитата(AntonSaburov @ 14.9.2004, 18:56)
Во-первых, я уже занес мышку над предупреждениями - остывайте smile.gif

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

все. умолкаю на долго.
Приношу извинения.
PS: а объект-то лишний мне и не хочется создавать smile.gif.



--------------------
--
Sleepy_PIP. Pavel Pryazhentsev (ex. 2:5020/141) "... Лучше быть нужным, чем
свободным ..."
PM MAIL ICQ   Вверх
Domestic Cat
Дата 14.9.2004, 19:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 5452
Регистрация: 3.5.2004
Где: Dallas, US

Репутация: 50
Всего: 172



Код

class Account
{
   private double money;
   public Account(double money)
   {
       this.money = money;
   }
   public double getBalance()
   {
       return money;
   }
   public void withdrawMoney(double moneyToWithdraw) throws BalanceException, InvalidArgumentException
   {
       if (moneyToWithdraw < 0)
       {
           throw new InvalidArgumentException("Negative argument");
       }
       if (moneyToWithdraw > money)
       {
           throw new BalanceException(moneyToWithdraw);
       }
       money -= moneyToWithdraw;
   }
   public void putMoney(double moneyToPut) throws InvalidArgumentException
   {
       if (moneyToWithdraw < 0)
       {
           throw new InvalidArgumentException("Negative argument");
       }
       money += moneyToWithdraw;
   }
}

class BalanceException extends Exception
{
   private double amount;
   public BalanceException(double amount)
   {
       this.amount = amount;
   }
   public void toString()
   {
       System.out.println("You cannot withdraw " + amount + " dollars");
   }
}

class Bank
{
   //...
   public void processTransaction(Account from, Acoount to, double sum) throws BalanceException, InvalidArgumentException
   {
       to.putMoney(from.withdrawMoney(sum));
   }
   
   public static void main(String args[])
   {
       Account account1 = new Account(5000);
       Account account2 = new Account(2000);
       try
       {
           processTransaction(account1, account2, 1000);
       }
       catch (Exception e)
       {
           System.out.println(e.toString());
       }
   }
}


Это сообщение отредактировал(а) Domestic Cat - 14.9.2004, 19:11


--------------------

PM   Вверх
Sleepy_PIP
Дата 14.9.2004, 19:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 512
Регистрация: 30.6.2004
Где: Moscow

Репутация: 4
Всего: 12



Цитата(Domestic @ 14.9.2004, 19:08)
Код

class Account
{
   private double money;
   public Account(double money)
   {
       this.money = money;
   }
   public double getBalance()
   {
       return money;
   }
   public void withdrawMoney(double moneyToWithdraw) throws BalanceException, InvalidArgumentException
   {
       if (moneyToWithdraw < 0)
       {
           throw new InvalidArgumentException("Negative argument");
       }
       if (moneyToWithdraw > money)
       {
           throw new BalanceException(moneyToWithdraw);
       }
       money -= moneyToWithdraw;
   }
   public void putMoney(double moneyToPut) throws InvalidArgumentException
   {
       if (moneyToWithdraw < 0)
       {
           throw new InvalidArgumentException("Negative argument");
       }
       money += moneyToWithdraw;
   }
}

class BalanceException extends Exception
{
   private double amount;
   public BalanceException(double amount)
   {
       this.amount = amount;
   }
   public void toString()
   {
       System.out.println("You cannot withdraw " + amount + " dollars");
   }
}

class Bank
{
   //...
   public void processTransaction(Account from, Acoount to, double sum) throws BalanceException, InvalidArgumentException
   {
       to.putMoney(from.withdrawMoney(sum));
   }
   
   public static void main(String args[])
   {
       Account account1 = new Account(5000);
       Account account2 = new Account(2000);
       try
       {
           processTransaction(account1, account2, 1000);
       }
       catch (Exception e)
       {
           System.out.println(e.toString());
       }
   }
}

AntonSaburov! ну можно последний мессаг, а? Можно? правда последний ...
а теперь задачка меняется.
1. в платеже нет либо счета плательщика, либо счета отправителя. совсем.
2. в платеже есть счета, но нет суммы.
Все определяется конечно, но совсем далеко от счетов и сумм.
Пример - получатель отпределяется исходя из состояния к/с , суммы и еще десятка параметров.
И совсем не обязательно что таким путем. путей - минимум 5.
При отсудствии суммы оная определяется _в_течени_ дня на основе остатков по счетам, к/с, курса валют, и желания пользователя (банковский работник).
Ну и?




--------------------
--
Sleepy_PIP. Pavel Pryazhentsev (ex. 2:5020/141) "... Лучше быть нужным, чем
свободным ..."
PM MAIL ICQ   Вверх
TrivialCore
Дата 14.9.2004, 19:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 242
Регистрация: 26.4.2004

Репутация: 2
Всего: 5



Sleepy_PIP, я думаю, тут прав Domestic Cat. Java - это не просто язык программирования. Это также стиль программирования, стиль проектирования решения задачи, и в правильно запроектированной задаче тебе никогда не понадобится возвращать более одного объекта. Если надо - значит ты плохо (не согласно стилю Java) запроектировал программу.

Thinking in Java читали?

Конечно, можно извращаться, писать по-своему, но скажи, почему во многих языках избегают использования GOTO?
PM MAIL   Вверх
Sleepy_PIP
Дата 14.9.2004, 19:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 512
Регистрация: 30.6.2004
Где: Moscow

Репутация: 4
Всего: 12



Цитата(TrivialCore @ 14.9.2004, 19:19)
Sleepy_PIP, я думаю, тут прав Domestic Cat. Java - это не просто язык программирования. Это также стиль программирования, стиль проектирования решения задачи, и в правильно запроектированной задаче тебе никогда не понадобится возвращать более одного объекта. Если надо - значит ты плохо (не согласно стилю Java) запроектировал программу.

Thinking in Java читали?

Конечно, можно извращаться, писать по-своему, но скажи, почему во многих языках избегают использования GOTO?

мне уже больше нелзя писать здесь. сорри sad.gif.


--------------------
--
Sleepy_PIP. Pavel Pryazhentsev (ex. 2:5020/141) "... Лучше быть нужным, чем
свободным ..."
PM MAIL ICQ   Вверх
TrivialCore
Дата 14.9.2004, 19:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 242
Регистрация: 26.4.2004

Репутация: 2
Всего: 5



Почему нельзя?
PM MAIL   Вверх
Domestic Cat
Дата 14.9.2004, 19:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 5452
Регистрация: 3.5.2004
Где: Dallas, US

Репутация: 50
Всего: 172



Цитата(Sleepy_PIP @ 14.9.2004, 10:16)
1. в платеже нет либо счета плательщика, либо счета отправителя. совсем.
2. в платеже есть счета, но нет суммы.
Все определяется конечно, но совсем далеко от счетов и сумм.
Пример - получатель отпределяется исходя из состояния к/с , суммы и еще десятка параметров.
И совсем не обязательно что таким путем. путей - минимум 5.
При отсудствии суммы оная определяется _в_течени_ дня на основе остатков по счетам, к/с, курса валют, и желания пользователя (банковский работник).
Ну и?


1. я совсем нe имею представления, о чем это все - к/с , платежи.???
2. И какое это имеет отношение к транзакции? Это детали, связанные с бухгалтерией, и для которых
я бы написал приложение, осуществляющее поиск счетов по различным параметрам,
имей я представление о к/с, п/с кптмрпс и проч.
При этом класс Account (равно как и другие классы) так бы и остался неизменным.




--------------------

PM   Вверх
Sleepy_PIP
Дата 14.9.2004, 19:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 512
Регистрация: 30.6.2004
Где: Moscow

Репутация: 4
Всего: 12



Цитата(Sleepy_PIP @ 14.9.2004, 19:16)
Цитата(Domestic @ 14.9.2004, 19:08)
Код

class Account
{
   private double money;
   public Account(double money)
   {
       this.money = money;
   }
   public double getBalance()
   {
       return money;
   }
   public void withdrawMoney(double moneyToWithdraw) throws BalanceException, InvalidArgumentException
   {
       if (moneyToWithdraw < 0)
       {
           throw new InvalidArgumentException("Negative argument");
       }
       if (moneyToWithdraw > money)
       {
           throw new BalanceException(moneyToWithdraw);
       }
       money -= moneyToWithdraw;
   }
   public void putMoney(double moneyToPut) throws InvalidArgumentException
   {
       if (moneyToWithdraw < 0)
       {
           throw new InvalidArgumentException("Negative argument");
       }
       money += moneyToWithdraw;
   }
}

class BalanceException extends Exception
{
   private double amount;
   public BalanceException(double amount)
   {
       this.amount = amount;
   }
   public void toString()
   {
       System.out.println("You cannot withdraw " + amount + " dollars");
   }
}

class Bank
{
   //...
   public void processTransaction(Account from, Acoount to, double sum) throws BalanceException, InvalidArgumentException
   {
       to.putMoney(from.withdrawMoney(sum));
   }
   
   public static void main(String args[])
   {
       Account account1 = new Account(5000);
       Account account2 = new Account(2000);
       try
       {
           processTransaction(account1, account2, 1000);
       }
       catch (Exception e)
       {
           System.out.println(e.toString());
       }
   }
}

AntonSaburov! ну можно последний мессаг, а? Можно? правда последний ...
а теперь задачка меняется.
1. в платеже нет либо счета плательщика, либо счета отправителя. совсем.
2. в платеже есть счета, но нет суммы.
Все определяется конечно, но совсем далеко от счетов и сумм.
Пример - получатель отпределяется исходя из состояния к/с , суммы и еще десятка параметров.
И совсем не обязательно что таким путем. путей - минимум 5.
При отсудствии суммы оная определяется _в_течени_ дня на основе остатков по счетам, к/с, курса валют, и желания пользователя (банковский работник).
Ну и?

Да! а транзакцию ты _должен_ создать на момент прихода даже не полного платежа ...


--------------------
--
Sleepy_PIP. Pavel Pryazhentsev (ex. 2:5020/141) "... Лучше быть нужным, чем
свободным ..."
PM MAIL ICQ   Вверх
Domestic Cat
Дата 14.9.2004, 19:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 5452
Регистрация: 3.5.2004
Где: Dallas, US

Репутация: 50
Всего: 172



Цитата(Sleepy_PIP @ 14.9.2004, 10:28)
Да! а транзакцию ты _должен_ создать на момент прихода даже не полного платежа ...


Да откуда ж я это знаю??? Мы что, пишем реальное приложение???
Зачем привлекать сюда детали какие-то?
И че ты хочешь этим примером показать? При разумной организации классов
мне любое изменение условий нипочем. Прислушайся к TrivialCore.





--------------------

PM   Вверх
Sleepy_PIP
Дата 14.9.2004, 19:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 512
Регистрация: 30.6.2004
Где: Moscow

Репутация: 4
Всего: 12



Цитата(Domestic @ 14.9.2004, 19:26)
Цитата(Sleepy_PIP @ 14.9.2004, 10:16)
1. в платеже нет либо счета плательщика, либо счета отправителя. совсем.
2. в платеже есть счета, но нет суммы.
Все определяется конечно, но совсем далеко от счетов и сумм.
Пример - получатель отпределяется исходя из состояния к/с , суммы и еще десятка параметров.
И совсем не обязательно что таким путем. путей - минимум 5.
При отсудствии суммы оная определяется _в_течени_ дня на основе остатков по счетам, к/с, курса валют, и желания пользователя (банковский работник).
Ну и?


1. я совсем нe имею представления, о чем это все - к/с , платежи.???
2. И какое это имеет отношение к транзакции? Это детали, связанные с бухгалтерией, и для которых
я бы написал приложение, осуществляющее поиск счетов по различным параметрам,
имей я представление о к/с, п/с кптмрпс и проч.
При этом класс Account (равно как и другие классы) так бы и остался неизменным.

при чем здесь поиск?
в том то и дело, что написанно тобой просто не годиться.
processTransaction не годится. не годится class Account (ну не всесь, а смысл методов).
Основное - на момент транзакции теперь тебе стали не известы один из счетов, или сумма.
Все просто, но не подходит приведенное.
Конечно class Account должен существовать, тут без вопросов. Но КАК? - его похоже так-же надо переписать что-б он умел работать без счета? а как???
processTransaction и Bank должно быть изменено в корне. более того - как я и говорил - на момент processTransaction фактически отсудствуют параметры транзакции. Что - предложишь ввести какие-то формализованные параметры по умолчанию?
Мне пришлось сильно извращаться и резуьтат уже не ООП-ный.
И это тоолько малая часть ....



--------------------
--
Sleepy_PIP. Pavel Pryazhentsev (ex. 2:5020/141) "... Лучше быть нужным, чем
свободным ..."
PM MAIL ICQ   Вверх
Domestic Cat
Дата 14.9.2004, 19:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 5452
Регистрация: 3.5.2004
Где: Dallas, US

Репутация: 50
Всего: 172



Послушай, ты мне задал вопрос - как написать - и я написал. Я понятия не имею обо всех этих деталях.
Если ты хочешь хороший ответ - задавай правильный вопрос. Откуда я знаю, что годится а
что нет? Мне никто спек не показывал. Ты даже слова не сказал, что нужно а что нет.
Или все должны знать о транзакциях и счетах то же,что и ты?


--------------------

PM   Вверх
Sleepy_PIP
Дата 14.9.2004, 19:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 512
Регистрация: 30.6.2004
Где: Moscow

Репутация: 4
Всего: 12



Цитата(Domestic @ 14.9.2004, 19:42)
Послушай, ты мне задал вопрос - как написать - и я написал. Я понятия не имею обо всех этих деталях.
Если ты хочешь хороший ответ - задавай правильный вопрос. Откуда я знаю, что годится а
что нет? Мне никто спек не показывал. Ты даже слова не сказал, что нужно а что нет.
Или все должны знать о транзакциях и счетах то же,что и ты?

вообщем да, вопрос я задал не верно. я просто хотел показать что в реалии правильно с точки зрения ООП задача к сожалению превращяется при дальнейших реальных изменениях постановки задачи в "ежика". и про ООП туу можно на 50% забыть. особенно при проектировании. я и так перезакладываюсь на 90%, но этого оказывается мало sad.gif((.



--------------------
--
Sleepy_PIP. Pavel Pryazhentsev (ex. 2:5020/141) "... Лучше быть нужным, чем
свободным ..."
PM MAIL ICQ   Вверх
TrivialCore
Дата 14.9.2004, 19:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 242
Регистрация: 26.4.2004

Репутация: 2
Всего: 5



Sleepy_PIP, смотри:

Код
public class Account {

public Account(int accountNumber, int initCash) {
   //...
}

public void withdrawMoney(int cash) {
   //..
}

public void putMoney(int cash) {
   //...
}
//...
}

public class Bank {
//....
//.....

public Account getAccountForNumber(int accountNumber) {
//... get account somehow
return account;
}

public static void main (String[] args) {
   Bank bank = new Bank( /* .... */ );
   //.... add some accounts
   int accountNr1 = 34536;
   int accountNr2 = 54389;
   bank.performTransaction(bank.getAccountForNumber(accountNr1),
               bank.getAccountForNumber(accountNr2), 100000);
}

}
Если это то, о чем ты говорил. Поправил класс Account, т.к. там не было номера =)

PM MAIL   Вверх
Sleepy_PIP
Дата 14.9.2004, 19:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 512
Регистрация: 30.6.2004
Где: Moscow

Репутация: 4
Всего: 12



Цитата(Sleepy_PIP @ 14.9.2004, 19:45)
Цитата(Domestic @ 14.9.2004, 19:42)
Послушай, ты мне задал вопрос - как написать - и я написал. Я понятия не имею обо всех этих деталях.
Если ты хочешь хороший ответ - задавай правильный вопрос. Откуда я знаю, что годится а
что нет? Мне никто спек не показывал. Ты даже слова не сказал, что нужно а что нет.
Или все должны знать о транзакциях и счетах то же,что и ты?

вообщем да, вопрос я задал не верно. я просто хотел показать что в реалии правильно с точки зрения ООП задача к сожалению превращяется при дальнейших реальных изменениях постановки задачи в "ежика". и про ООП туу можно на 50% забыть. особенно при проектировании. я и так перезакладываюсь на 90%, но этого оказывается мало sad.gif((.

главное что я хотел сказать - что специфика именно банковской разработки в россии (и не только банковской судя по всему) предпологает коренные изменения при каждом последующем выходе очередного даже не закона - а инструкции ЦБ ... sad.gif(.
И это факт и с ним надо считаться.
Т.е. это означает одно - поставленная задача не детерминирована. вообще. и может поменяться в произвольном направлении с течением времени. В таком случае очень сложно отловить базис ООП для таких задач ... это действительно так!

Добавлено @ 19:55
Цитата(TrivialCore @ 14.9.2004, 19:49)
Sleepy_PIP, смотри:

Код
public class Account {

public Account(int accountNumber, int initCash) {
   //...
}

public void withdrawMoney(int cash) {
   //..
}

public void putMoney(int cash) {
   //...
}
//...
}

public class Bank {
//....
//.....

public Account getAccountForNumber(int accountNumber) {
//... get account somehow
return account;
}

public static void main (String[] args) {
   Bank bank = new Bank( /* .... */ );
   //.... add some accounts
   int accountNr1 = 34536;
   int accountNr2 = 54389;
   bank.performTransaction(bank.getAccountForNumber(accountNr1),
               bank.getAccountForNumber(accountNr2), 100000);
}

}
Если это то, о чем ты говорил. Поправил класс Account, т.к. там не было номера =)

нет, не так.
Ладно, оставим это. это моя проблемма что я не могу сформулировать задание. могу сформулировать только одно - задание будет отменено и изменено на новое. sad.gif(.
Ну это и правда моя проблемма, больше не хочу говорить со знатоками ООП и строго расписанных задач smile.gif)))
Я виновт. я.
Приношу извинения.



--------------------
--
Sleepy_PIP. Pavel Pryazhentsev (ex. 2:5020/141) "... Лучше быть нужным, чем
свободным ..."
PM MAIL ICQ   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Java"
LSD   AntonSaburov
powerOn   tux
javastic
  • Прежде, чем задать вопрос, прочтите это!
  • Книги по Java собираются здесь.
  • Документация и ресурсы по Java находятся здесь.
  • Используйте теги [code=java][/code] для подсветки кода. Используйтe чекбокс "транслит", если у Вас нет русских шрифтов.
  • Помечайте свой вопрос как решённый, если на него получен ответ. Ссылка "Пометить как решённый" находится над первым постом.
  • Действия модераторов можно обсудить здесь.
  • FAQ раздела лежит здесь.

Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, tux, javastic.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Java: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0622 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.