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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Реализация структуры 
:(
    Опции темы
zss
Дата 29.12.2004, 09:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



На сколько я знаю, в Java не существует структур. Но нужно передавать что-то вроде ее в методы класса.
Я так понимаю, что необходимо ее реализовывать в виде класса. А больше нет способов ?

Просто встает вопрос в открытости членов. Одним из полей должен быть двумерный массив. Если делать этот член закрытим, то чтение и запись можно будет осуществить только методами, что усложняет код (и как мне кажется замедляет).
PM MAIL ICQ   Вверх
Domestic Cat
Дата 29.12.2004, 09:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

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



Цитата(zss @ 29.12.2004, 00:00)
в Java не существует структур.


Не существует.


Цитата(zss @ 29.12.2004, 00:00)
Я так понимаю, что необходимо ее реализовывать в виде класса.


Типа того.


Цитата(zss @ 29.12.2004, 00:00)
А больше нет способов ?


Нет.


Цитата(zss @ 29.12.2004, 00:00)
Если делать этот член закрытим, то чтение и запись можно будет осуществить только методами, что усложняет код (и как мне кажется замедляет).


1. Замедляет, но ничтожно.
2. Что мешает сделать его паблик:
Код

class MyClass
{
      public int[][] array = new int[5][55];
      // и т п
}

// ....
MyClass myClass = new MyClass();
// ...
myClass.array[1][5] = 33;



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

PM   Вверх
Се ля ви
Дата 29.12.2004, 09:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Java/SOAрхитектор
****


Профиль
Группа: Модератор
Сообщений: 2016
Регистрация: 5.6.2004
Где: place without tim e and space

Репутация: 8
Всего: 127



так сделай его public и наплюй на инкапсуляцию, если скорость так уж важна. Но вообще это не хорошо, ИМХО, лучше писать классы через JavaBeans, а синтаксис...

А в чём принципиальная разница - obj.array1[x][y] и obj.array1(x,y) ?

Это сообщение отредактировал(а) Се ля ви - 29.12.2004, 09:49


--------------------
  )
 (
[_])
проф. блог

Кролики думали, что занимаются любовью, а на самом деле их просто разводили...
PM MAIL WWW Skype GTalk   Вверх
Sun
Дата 29.12.2004, 12:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Account removed
***


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

Репутация: 8
Всего: 48



Цитата
А в чём принципиальная разница - obj.array1[x][y] и obj.array1(x,y) ?

В первом случае обращение к элементу массива "obj.array1[x][y] " а во втором вызов метода "obj.array1(x,y)".


--------------------
Account removed
PM MAIL   Вверх
zss
Дата 29.12.2004, 16:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Это все понятно. Ну допустим можно реализовать класс. А что если нужно реализовать что-то вроде списка в классе. Если бы были указатели, то все понятно, а как быть в Java. Или есть стандаотные способы ?
PM MAIL ICQ   Вверх
Domestic Cat
Дата 29.12.2004, 16:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

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



В Java все (кроме примитивов) - указатели. ИМО стоит почитать книжки.


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

PM   Вверх
zss
Дата 29.12.2004, 17:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Цитата(Domestic @ 29.12.2004, 16:33)
В Java все (кроме примитивов) - указатели. ИМО стоит почитать книжки.


Ну просто защибись. Только что прочитал почти до конца Чарли Калверта, который явно говорил, что разаработчики Java отказались от явных указателей из-за большего количества ошибок при работе с ними.

Так кому верить?

PM MAIL ICQ   Вверх
Domestic Cat
Дата 29.12.2004, 17:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

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



Цитата
Только что прочитал почти до конца Чарли Калверта, который явно говорил, что разаработчики Java отказались от явных указателей из-за большего количества ошибок при работе с ними.


Все "ссылки" в Java яваляюся указателями, хотяс ними нельзя делать то что с обычными поинтерами - дереференсинг и пр.


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

PM   Вверх
zss
Дата 29.12.2004, 20:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Так про это и говорю. Естественно что у объекта в памяти есть адрес, но им нельзя оперировать. Так как реализовать списки (или что-то вроде динамического массива без потери данных). Необходимо по мере возможности добавлять записи...
PM MAIL ICQ   Вверх
Domestic Cat
Дата 29.12.2004, 20:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

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



Есть пакет java.util, в нем
http://java.sun.com/j2se/1.4.2/docs/api/ja...LinkedList.html


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

PM   Вверх
xaoc2
Дата 30.12.2004, 00:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Незнаю, подойдёт ли для этого случая.
Вот несколько закрученый пример из книги Thinking In Java (Bruce Eckel) :

Код

//: c08:Month2.java
// Более здоровая система перечисления.
package c08;

public final class Month2 {
 private String name;
 private Month2(String nm) { name = nm; }
 public String toString() { return name; }
 public final static Month2
   JAN = new Month2("January"),
   FEB = new Month2("February"),
   MAR = new Month2("March"),
   APR = new Month2("April"),
   MAY = new Month2("May"),
   JUN = new Month2("June"),
   JUL = new Month2("July"),
   AUG = new Month2("August"),
   SEP = new Month2("September"),
   OCT = new Month2("October"),
   NOV = new Month2("November"),
   DEC = new Month2("December");
 public final static Month2[] month =  {
   JAN, JAN, FEB, MAR, APR, MAY, JUN,
   JUL, AUG, SEP, OCT, NOV, DEC
 };
 public static void main(String[] args) {
   Month2 m = Month2.JAN;
   System.out.println(m);
   m = Month2.month[12];
   System.out.println(m);
   System.out.println(m == Month2.DEC);
   System.out.println(m.equals(Month2.DEC));
 }
} ///:~



PM MAIL   Вверх
Domestic Cat
Дата 30.12.2004, 01:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

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



Хм? Вроде как уже и enum есть, да и о списках речь идет smile


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

PM   Вверх
zss
Дата 5.1.2005, 22:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Спасибо за советы - попробую разобраться.

Только еще вопрос - что-то я не смог найти реализацию операторов в классах - или в java это делается только через функции ?
PM MAIL ICQ   Вверх
Domestic Cat
Дата 5.1.2005, 23:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

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




Цитата
Только еще вопрос - что-то я не смог найти реализацию операторов в классах - или в java это делается только через функции ?


Перегрузка опeраторов? Так ее нет.


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

PM   Вверх
zss
Дата 5.1.2005, 23:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Цитата(Domestic @ 5.1.2005, 23:00)
Перегрузка опeраторов? Так ее нет.


Жаль, довольно удобно. А так только член-функция ?

PM MAIL ICQ   Вверх
Domestic Cat
Дата 6.1.2005, 00:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

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



Точнее метод.


Цитата(zss @ 5.1.2005, 14:39)
Жаль, довольно удобно.


Привожу два ответа: первый с сайта java.sun.com, второй с jguru

Цитата
James Gosling said they came to the conclusion that operator
overloading had caused problems with many programmers and had
led, in some cases, to misleading programs (for example, where a
programmer reused the "+" for a completely inappropriate
action). So they decided to leave it out.


Цитата
Of course, most people want to know why Java does not support user-defined operator overloading. :-) The simplest answer seems to be that the Java creators did not, at the time, see any clean way to add it to the language without making Java a mess (like C++) in the process.



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

PM   Вверх
zss
Дата 6.1.2005, 01:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Спасибо - хоть с английским не дружу, но с помощью переводчика смысл понял


Domestic Cat, с днем варенья и спасибо за помощь smile
PM MAIL ICQ   Вверх
Domestic Cat
Дата 6.1.2005, 01:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

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



Цитата(zss @ 5.1.2005, 16:03)
Domestic Cat, с днем варенья и спасибо за помощь smile


Спасибо, не за что smile


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

PM   Вверх
Zandr
Дата 17.1.2005, 08:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

Репутация: 9
Всего: 13



zss, настоятельно рекомендую прочитать (хотя бы прочитать и хотя бы один раз) Thinking In Java (вроде пока третье издание последнее...). Там и теория и упражнения (даже картинки есть), так же сравнения с C++. Все что там есть - обязан знать даже весьма посредственный Java программер smile Читается книжка очень легко. Сам ничуть не жалею о потраченном на чтение времени.
Скачать можно с сайта mindview. Там еще много чего есть.


Это сообщение отредактировал(а) Zandr - 17.1.2005, 08:08
PM MAIL   Вверх
zss
Дата 17.1.2005, 09:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



К своему стытду я не очень дружу с английским smile
PM MAIL ICQ   Вверх
Domestic Cat
Дата 17.1.2005, 09:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

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





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

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

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

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


 




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


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

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