Форум программистов, компьютерный форум CyberForum.ru
Наши страницы

Программирование Android

Войти
Регистрация
Восстановить пароль
 
Karat37
0 / 0 / 0
Регистрация: 03.10.2015
Сообщений: 14
#1

Бредовый код - Программирование Android

20.02.2016, 04:12. Просмотров 221. Ответов 2
Метки нет (Все метки)

Доброго времени суток ребят.
нужен совет, иначе голова однажды просто лопнет.
цель наполнить массив объектами, с разными значениями полей объектов
в общем имеем следующее:

первый класс: обращаясь к методу moveY в котором должно всё происходить
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
public class Player {
    public Player(){
        x = 150;
        y = 0;
        currentWorld = 1;
        thisPlanet = new Ore[150][300];
    }
    private int x;
    private int y;
    private int currentWorld;
    Initialize initialize;
    private Ore[][] thisWorld;
 
    public void moveY(int y){
        thisPlanet[x][y] = initialize.initialize(new Ore(),currentWorld,y);
        this.y = y;
    }
второй класс Ore,объекты которого создаются при обращении к методу initialize.initialize(new Ore(),currentWorld,y):
Java
1
2
3
4
5
6
7
public class Ore {
    public String name;
    public int id;
    public int rarity;
    public int count;
    public int density;
}
третий класс, к которому обращается метод при создании объекта Ore и добавлением его в массив, что-бы определить поля:
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
public abstract class Initialize {
 
    private int y;
    Ore ore;
    Planet1 planet;
 
    public Ore initialize(Ore ore, int planet, int y) {
        this.ore = ore;
        this.y = y;
        checkPlanet(planet);
        return ore;
    }
 
 
    private void checkPlanet(int planet) {
 
        switch (planet) {
            case 1:
                planet1();
                break;
        }
    }
 
    private void planet1() {
        planet = new Planet1();
        planet.check(ore,y);
    }
}
а четвёртый класс уже определяет поля объекта Ore:

Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
public class Planet1 {
    private int rarity;
    Ore ore;
 
    public void check(Ore ore, int y) {
        this.ore = ore;
        rock(y);
 
    }
 
 
    private void rock(int y) {
        rarity = 20;
        if (y > 5 && y < 300) {
            if(rarity>Math.random()*100) {
                ore.name = String.valueOf(R.string.rock);
                ore.id = 1;
                ore.count = (int) (40 + (Math.random() * y+10));
                ore.density = 4;
                return;
            }
        }
        iron(y);
    }
 
    private void iron(int y) {
        rarity = 25;
        if (y > 10 && y < 300) {
            if(rarity>Math.random()*100) {
                ore.name = String.valueOf(R.string.iron);
                ore.id = 2;
                ore.count = (int) (70 + (Math.random() * y+10));
                ore.density = 1;
                return;
            }
        }
        silver(y);
    }
 
    private void silver(int y) {
        rarity = 20;
        if (y > 40 && y < 300) {
            if(rarity+(y/10)>Math.random()*100) {
                ore.name = String.valueOf(R.string.silver);
                ore.id = 3;
                ore.count = (int) (37 + (Math.random() * y+10));
                ore.density = 3;
                return;
            }
        }
        gold(y);
    }
}
несколько вопросов по этому коду визникло
1)Только мне кажется этот код с бесполезно большим количеством передач объекта от одново к другому методу?
2)Не понимаю зачем нужно наследование, интерфейсы и абстрактные классы, если работу ведёшь над проектом один и смысл от соблюдения контрактов уже не играет такой большой роли, направьте в нужном направлении, чувствую я сошел с пути
3)что скажите про архитектуру этого кода?

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

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

Извиняюсь за много букв, если что-то не понятно, спрашивайте, попытаюсь объяснить как можно понятнее.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
20.02.2016, 04:12
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Бредовый код (Программирование Android):

Проверить "Бредовый" код - HTML, CSS
Здравствуйте т.к. я недавно стал изучать html+css часто сталкиваюсь с различными проблемами которые приходится решать методом проб и ошибок...

Почему такой бредовый вывод типов и как с этим быть? - F#
Если так let add (a:float) (b:float) (c:float) = b * b - a * c;; то всё нормально val add : a:float -&gt; b:float -&gt; c:float...

Код написан в Dev C. Не работает в Visual. Как нужно переделать код? - C++
Здравствуйте. Столкнулась с такой проблемой: код был написан в Dev C, но в Visual он выдаёт ошибку. ...

При нажатии на button выполнить свой код + код другого баттона - Delphi
Как?

Переделать исходный код. Код в Паскале,а нужно сделать его в Фортране - Free Pascal
{$S+,R+} program arab_to_roman; uses crt; var n : word; ch : char; procedure convert(n : word);

Надо написать код программы (код есть оформить в маткад не могу_ - MathCAD
Видео файл меньше весит чем картинка :D Вот этот код If r1=X0 then g4(r1)=... Как его записать чтобы маткад его воспринял ?

2
Spelcrawler
527 / 497 / 111
Регистрация: 12.03.2014
Сообщений: 1,649
Завершенные тесты: 1
20.02.2016, 10:12 #2
Karat37, в java не принято поля public делать, обычно они private, иногда protected. А работа из вне с ними происходит через set\get.

Добавлено через 1 минуту
А по поводу структуры и переписывания по много раз - это нормально я считаю. Поначалу будете переписывать, потом уже сразу оптимально писать, думаю все через это проходят.
0
Karat37
0 / 0 / 0
Регистрация: 03.10.2015
Сообщений: 14
21.02.2016, 15:19  [ТС] #3
а по поводу наследования и интерфейсов?

Добавлено через 26 минут
Подскажите как лучше реализовать генерацию, процедурную,т.е. по мере необходимости, или сразу всё? получается примерно 45000 объектов в массве, не слишком будет для телефона?

Добавлено через 13 часов 52 минуты
Закрыть тему.
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
21.02.2016, 15:19
Привет! Вот еще темы с ответами:

.NET 4.x Как адаптировать код wmi под код visual studio 2010 - Visual Basic .NET
Доброе время суток всем. Подскажите пожалуйста для новичка, что бы можно было разобраться, как адаптировать код wmi под код visual studio...

Составить код, чтобы когда нажимаешь на клавиатуру, выводился Аски код - Assembler
составить код, чтобы когда нажимаешь на клавиатуру, выводился Аски код

Очередной код с возможным вирусом. Как думаете этот код опасен? - PHP
&lt;?php // no direct access defined('_JEXEC') or die('Restricted access'); ?&gt; &lt;ul class=&quot;sections&lt;?php echo...

Не получается запустить длинный код Алгоритма Гомори, код правильный. - C++
Собственно как запустить код через С++Builder 6 #include&lt;ctype.h&gt; #include&lt;string.h&gt; #include&lt;conio.h&gt; #include&lt;stdio.h&gt; ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru