Форум программистов, компьютерный форум, киберфорум
Java SE (J2SE)
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.81/21: Рейтинг темы: голосов - 21, средняя оценка - 4.81
0 / 0 / 0
Регистрация: 21.03.2013
Сообщений: 4

Разработка объектно-ориентированной программы на Java

21.03.2013, 12:18. Показов 4142. Ответов 18
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте, уважаемые форумчане!
Прошу вашей помощи с одним заданием. Сейчас я учусь в институте, но, к сожалению, сложилась такая ситуация, что концепции ООП так и не были поняты мной - после процедурного программирования это вызвало некоторую сложность.
Есть список заданий:
1. Создайте новый проект в среде Eclipse.
2. Создайте базовый абстрактный класс, добавив в него соответствующие поля и методы(в том числе методы-акцессоры, конструкторы).
3. Отнаследовать классы-потомки от базового класса, добавив в них соответствующие поля и методы(в том числе методы-акцессоры, конструкторы).
4. В разработанных классах должны быть использованы ключевые слова static, super, final, this.
5. В базовом классе создать метод print, который печатает содержимое полей и обеспечить его замещение в классах потомках.
6. Переопределить методы finalize(), который будет выводит сообщение о том, что объект класса уничтожен и метод toString(), дающий строковое описание объекта.
7. Создать интерфейс и обеспечить реализацию его методов классами–потомками.
8. Поместить созданные классы и интерфейс в пакет.
9. Создайте вне пакета управляющий класс, предусмотрев в нем точку входа (main), который будет подключать пакет и осуществлять тестирование разработанных классов и интерфейса.
Основная тема заданий:
Базовый класс - Животное
Приватные поля баз. класса - вид, семество, число конечностей, число потомков
Порожденные классы - домашнее животное, имеющее кличку; дикое животное, имеющее место обитания
Интерфейс - Млекопитающие. Определить функции переназначения и числа потомков и вывода способа кормления
Я попыталась выполнить часть заданий исходя из того, что я более-менее понимаю (хотя, может, и неверно):
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
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
public abstract class Animal {
    
    String type;            // вид
    String family;          // семейство
    String numOfLimbs;      // число конечностей
    String numOfChildren;   //число потомков
    
    public Animal (String type, String family, String numOfLimbs, String numOfchildren, String numOfChildren) {
        super();
        this.type = type;
        this.family = family;
        this.numOfLimbs = numOfLimbs;
        this.numOfChildren = numOfChildren;
    }
    
    public Animal () {
        super();
    }
 
    public String getType() {
        return type;
    }
 
    public void setType(String type) {
        this.type = type;
    }
 
    public String getFamily() {
        return family;
    }
 
    public void setFamily(String family) {
        this.family = family;
    }
 
    public String getNumOfLimbs() {
        return numOfLimbs;
    }
 
    public void setNumOfLimbs(String numOfLimbs) {
        this.numOfLimbs = numOfLimbs;
    }
 
    public String getNumOfChildren() {
        return numOfChildren;
    }
 
    public void setNumOfChildren(String numOfChildren) {
        this.numOfChildren = numOfChildren;
    }
}
 
    class Pet extends Animal {
        
        String name;
        String breed;
        
        public Pet (String name, String breed) {
            super();
            this.name = name;
            this.breed = breed;
        }
        
        public Pet () {
            super();
        }
 
        public String getName() {
            return name;
        }
 
        public void setName(String name) {
            this.name = name;
        }
 
        public String getBreed() {
            return breed;
        }
 
        public void setBreed(String breed) {
            this.breed = breed;
        }
    }
    
    class WildAnimal extends Animal {
        
        String color;
        
        public WildAnimal (String color) {
            super();
            this.color = color;
        }
        
        public WildAnimal () {
            super();
        }
 
        public String getColor() {
            return color;
        }
 
        public void setColor(String color) {
            this.color = color;
        }
    }
На этом я застопорилась и не представляю, что и как организовать дальше. Я читала дополнительную литературу, но не знаю, как правильно применить сведения оттуда в заданиях.
Прошу помощи в выполнении данных заданий.
Заранее большое спасибо.
0
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
21.03.2013, 12:18
Ответы с готовыми решениями:

Разработка программ по объектно-ориентированной технологии
Используя ООП, определить объект КОМЛЕКСНОЕ ЧИСЛО. Найти сумму двух комплексных чисел.

Построение объектно-ориентированной иерархии
Здравствуйте, совсем недавно начал изучать ООП и возник такой вопрос. Допустим я создаю игру при помощи ООП. У меня есть класс Building....

Выбор объектно-ориентированной среды
Помогите выбрать среду разработки для Игры "Аквариум". Borland Delphi для меня ближе и кроме него нигде не работала, но может для написания...

18
 Аватар для Antenka
56 / 56 / 0
Регистрация: 15.03.2013
Сообщений: 88
21.03.2013, 16:49
Итак, давайте начнем с анализа написанного:
1.
Цитата Сообщение от Victoria91 Посмотреть сообщение
super();
. Это первое "непонимаю", которое попалось на глаза Это вызов конструктора базового класса. Т.к. у нас базовый класс явно не указан, то мы наследуемся от класса Object (от него, в конечном итоге, идут все ссылочные типы данных).
super используют тогда, когда есть необходимость того, чтобы базовый конструктор отработал в указанном месте. В Вашем случае такой необходимости нет.

2.
Java
1
2
3
public Animal () {
        super();
    }
Тут то же самое, что и в первом пункте. Плюс, можно добавить в конструктор без параметров создание какой-то зверушки по-умолчанию (это на Ваше усмотрение). Что я имею ввиду:

Java
1
2
3
public Animal () {
        this("Какой-то тип", "Какое-то семейство", "4", "5");
    }
Т.е., вызывая конструктор без параметров мы получаем в результате не пустой объект, а заполненный какими-то начальными данными.
this(...) - обращение к конструктору текущего класса с 4мя параметрами.

3. Почему numOfLimbs и numOfChildren - это строки? Гораздо удобнее измерять количество числами

4. По заданию "домашнее животное, имеющее кличку". Откуда в классе взялось "breed"?
5. По заданию "дикое животное, имеющее место обитания". Места обитания нет, но вместо этого у нас цвет ..
6. "Интерфейс - Млекопитающие. Определить функции переназначения и числа потомков и вывода способа кормления". Не поняла что у нас должно переназначаться. Я так понимаю, интерфейс должен содержать 3 метода.
Java
1
2
3
4
5
6
interface Mammal () {
//1. метод что-то переназначающий
//2. метод что-то делающий с числом потомков
//3. метод выводящий способ кормления.
 public String getWayToFeed();
    }
Правда, тут напрашивается другой вопрос ... какие способы кормления есть у млекопитающих?

7. "В базовом классе создать метод print, который печатает содержимое полей и обеспечить его замещение в классах потомках." Потерялся метод как в базовом классе, так и в потомках.

8. И еще 2 метода: "Переопределить методы finalize(), который будет выводит сообщение о том, что объект класса уничтожен и метод toString(), дающий строковое описание объекта."
Т.к. мы уже знаем, что мы неявно наследуемся от Object, "оригиналы" этих методов следует искать там. Нам всего-то надо посмотреть что эти методы принимают и что возвращают. А затем - переопределить в заданных классах.

9. "Создать интерфейс и обеспечить реализацию его методов классами–потомками." Об этом непонятном интерфейсе мы уже чуть раньше поговорили. Видимо, оба наших потомка его реализуют. Нам всего-то и остается добавить следующее:

Java
1
2
class Pet extends Animal implements  Mammal {...}
class WildAnimal extends Animal implements  Mammal {...}
Ну, и потом написать методы, которые заявлены у нас в интерфейсе в классах, которые его реализуют.

Про остальное можно поговорить, как с этим разберемся
2
0 / 0 / 0
Регистрация: 21.03.2013
Сообщений: 4
21.03.2013, 21:58  [ТС]
Все до 6 пункта исправила, спасибо большое.
А вот дальше... Темный лес Пойдем по пунктам:

Цитата Сообщение от Antenka Посмотреть сообщение
6. "Интерфейс - Млекопитающие. Определить функции переназначения и числа потомков и вывода способа кормления". Не поняла что у нас должно переназначаться. Я так понимаю, интерфейс должен содержать 3 метода.
Код Java(TM) 2 Platform Standard Edition 5.0
1
2
3
4
5
6
interface Mammal () {
//1. метод что-то переназначающий
//2. метод что-то делающий с числом потомков
//3. метод выводящий способ кормления.
*public String getWayToFeed();
* * }
Правда, тут напрашивается другой вопрос ... какие способы кормления есть у млекопитающих?
Где писать интерфейс? Нужно ли в него заключать все прежде написанное или он идет отдельным блоком? Как организовать правильно метод getWayToFeed?

Цитата Сообщение от Antenka Посмотреть сообщение
7. "В базовом классе создать метод print, который печатает содержимое полей и обеспечить его замещение в классах потомках." Потерялся метод как в базовом классе, так и в потомках.
Не поняла, что значит потерялся в базовом классе и в потомках? Нужно ли вообще его создавать?

Цитата Сообщение от Antenka Посмотреть сообщение
8. И еще 2 метода: "Переопределить методы finalize(), который будет выводит сообщение о том, что объект класса уничтожен и метод toString(), дающий строковое описание объекта."
Т.к. мы уже знаем, что мы неявно наследуемся от Object, "оригиналы" этих методов следует искать там. Нам всего-то надо посмотреть что эти методы принимают и что возвращают. А затем - переопределить в заданных классах.
Как правильно обратиться к Object в данном случае, чтобы посмотреть, что эти методы принимают и возвращают?

Цитата Сообщение от Antenka Посмотреть сообщение
9. "Создать интерфейс и обеспечить реализацию его методов классами–потомками." Об этом непонятном интерфейсе мы уже чуть раньше поговорили. Видимо, оба наших потомка его реализуют. Нам всего-то и остается добавить следующее:
Код Java(TM) 2 Platform Standard Edition 5.0
1
2
class Pet extends Animal implements *Mammal {...}
class WildAnimal extends Animal implements *Mammal {...}
Ну, и потом написать методы, которые заявлены у нас в интерфейсе в классах, которые его реализуют.
Что писать в фигурных скобках? Какова вообще цель этого? Какие методы и как нужно написать, заявленные в интерфейсе?

Прошу прощения за свою непонятливость, но после создания консольных приложений все это тяжело понять
0
10 / 36 / 7
Регистрация: 04.03.2013
Сообщений: 184
22.03.2013, 15:00
Надо читать =) Я бы посоветовал загуглить и скачать эту книгу Thinking_in_Java_(4th_Edition)_RUS
Потому что Антенка по сути должна рассказать вам её немалую часть. Гуд лак!
2
 Аватар для Antenka
56 / 56 / 0
Регистрация: 15.03.2013
Сообщений: 88
22.03.2013, 15:39
Цитата Сообщение от Victoria91 Посмотреть сообщение
Где писать интерфейс? Нужно ли в него заключать все прежде написанное или он идет отдельным блоком?
Воспринимайте интерфейс, как конструкцию на том же уровне, что и класс. Его можно и нужно в отдельный блок.

Цитата Сообщение от Victoria91 Посмотреть сообщение
Как организовать правильно метод getWayToFeed?
Насколько я понимаю, этот метод, как и любой из ваших getter-ов будет возвращать поле класса с нужной информацией. Но, обратите внимание, в интерфейсе вы только описываете методы. В нем нет и не должно быть реализации. Понимайте интерфейс как список требований к, допустим, классу, который его реализует. Мол, "в классе должен быть метод такой-то, который принимает такие-то параметры и возвращает такое-то значение". А вот уже в классе мы пишем код, который будет выполнять эти требования.

Цитата Сообщение от Victoria91 Посмотреть сообщение
Не поняла, что значит потерялся в базовом классе и в потомках? Нужно ли вообще его создавать?
Потерялся значит "в задании есть, а в коде нет". Создавать нужно, если собираетесь следовать заданию.

Цитата Сообщение от Victoria91 Посмотреть сообщение
Как правильно обратиться к Object в данном случае, чтобы посмотреть, что эти методы принимают и возвращают?
Можно вот так, к примеру: Class Object.

Цитата Сообщение от Victoria91 Посмотреть сообщение
Что писать в фигурных скобках?
То, что у Вас уже есть в классах + компилятор проследит, чтобы там были методы из интерфейса + методы из задания, которые Вы еще не реализовали.

Цитата Сообщение от Victoria91 Посмотреть сообщение
Какова вообще цель этого?
Цель чего? Цель того, что мы с Вами тут разбираем - решение Вашего задания. Цель этого проекта - думаю, обучить Вас принципам ООП. Цель ООП - думаю, все сводится к управлению сложностью. На маленьких задачах это сложно прочувствовать, но вот когда у Вас огромный проект, в котором сотни и тысячи классов, там, как говорится, "без 100 грамм не разобраться" И на помощь приходит ООП. Чем конкретно оно помогает ...
да, хотя бы тем, что мы решаем поставленную задачу в терминах нашей предметной области. Т.е., при написании каталога для зоопарка мы оперируем "зверушками", "дикоообразами", "вальерами" и т.п., а не регистрами, сигналами и пр.
Это не единственный плюс, но один из основных, на мой взгляд

Цитата Сообщение от Victoria91 Посмотреть сообщение
Какие методы и как нужно написать, заявленные в интерфейсе?
Какие методы должны быть в интерфейсе, написано у Вас в задании. Как описываются методы в нем? Приблизительно так:

Java
1
2
3
4
5
public interface Mylnterface
{
    public void someMethod1(int x,int y) ;
    public String someMethod2(int x, int у , int z)
}
Видите, мы просто описываем. Никаких реализаций.

А вообще, да ...
Цитата Сообщение от Freeman666 Посмотреть сообщение
Надо читать =) Я бы посоветовал загуглить и скачать эту книгу Thinking_in_Java_(4th_Edition)_RUS
Потому что Антенка по сути должна рассказать вам её немалую часть. Гуд лак!
я "по верхам" чуть-чуть захватила, а основную часть Вам хорошо бы самостоятельно проработать
0
 Аватар для mutagen
2587 / 2260 / 257
Регистрация: 14.09.2011
Сообщений: 5,185
Записей в блоге: 18
22.03.2013, 16:31
Лучший ответ Сообщение было отмечено как решение

Решение

Antenka, предлагаю создать ООП FAQ для новичков
3
 Аватар для Antenka
56 / 56 / 0
Регистрация: 15.03.2013
Сообщений: 88
22.03.2013, 16:34
Цитата Сообщение от mutagen Посмотреть сообщение
Antenka, предлагаю создать ООП FAQ для новичков
Да, можно, могу за пару дней накидать в общих чертах на утверждение
1
10 / 36 / 7
Регистрация: 04.03.2013
Сообщений: 184
22.03.2013, 16:44
И первый пост в теме будет примерно такой - "Мой совет начинающим java программистам - ребят, может не надо, а?"
Ну а дальше FAQ по ООП собственно. Кстати недавно столкнулся с вакансией java junior developer, так там рядом с ООП было ещё ООД и ещё подобные аббривеатуры из трёх букв. Кто-нибудь подскажет о чём речь?
0
68 / 68 / 1
Регистрация: 21.12.2012
Сообщений: 458
22.03.2013, 16:55
Цитата Сообщение от Freeman666 Посмотреть сообщение
было ещё ООД
объектно-ориентированный дизайн


Цитата Сообщение от Freeman666 Посмотреть сообщение
подобные аббривеатуры из трёх букв
какие,тоже интересно
0
10 / 36 / 7
Регистрация: 04.03.2013
Сообщений: 184
22.03.2013, 16:56
Вот собственно ссылка http://rabota.ua/company157474... 11.02.2013
0
 Аватар для AckiyBolt
653 / 402 / 35
Регистрация: 19.02.2013
Сообщений: 1,072
Записей в блоге: 2
22.03.2013, 16:58
гугл говорит что оод это объектно-ориентированный дизайн. а ооа скорее всего архитектура... ну в принципе да, на ооп языке можно и в процедурном стиле писать...

а ман по ооп это будет реально круто
0
68 / 68 / 1
Регистрация: 21.12.2012
Сообщений: 458
22.03.2013, 16:59
ООА
Объектно-Ориентированный -Анализ
design pattern ====Шаблоны проектирования

Добавлено через 17 секунд
ООА
Объектно-Ориентированный -Анализ
design pattern ====Шаблоны проектирования
0
 Аватар для Antenka
56 / 56 / 0
Регистрация: 15.03.2013
Сообщений: 88
22.03.2013, 17:11
Цитата Сообщение от Freeman666 Посмотреть сообщение
Вот собственно ссылка http://rabota.ua/company157474... 11.02.2013
Это не джуновая вакансия
0
10 / 36 / 7
Регистрация: 04.03.2013
Сообщений: 184
22.03.2013, 17:24
А платят как джуну. =)) Ни у кого нет случаем хорошей ссылочки по спрингу?
0
 Аватар для Antenka
56 / 56 / 0
Регистрация: 15.03.2013
Сообщений: 88
22.03.2013, 17:37
Цитата Сообщение от Freeman666 Посмотреть сообщение
А платят как джуну. =))
Распространенная практика ... особенно среди объявлений, где нужно знать все и сразу

Цитата Сообщение от Freeman666 Посмотреть сообщение
Ни у кого нет случаем хорошей ссылочки по спрингу?
Под рукой, увы, нет
0
 Аватар для mutagen
2587 / 2260 / 257
Регистрация: 14.09.2011
Сообщений: 5,185
Записей в блоге: 18
22.03.2013, 17:41
Цитата Сообщение от Freeman666 Посмотреть сообщение
ребят, может не надо, а?"
Это довольно частый вопрос и подобных объяснений вижу много (когда-то я и сам был в роли объясняющего),
поэтому думаю лишней тема не будет.

Добавлено через 1 минуту
Цитата Сообщение от Freeman666 Посмотреть сообщение
Ни у кого нет случаем хорошей ссылочки по спрингу?
загляни в литературу там есть
0
10 / 36 / 7
Регистрация: 04.03.2013
Сообщений: 184
22.03.2013, 18:38
Цитата Сообщение от mutagen Посмотреть сообщение
Это довольно частый вопрос и подобных объяснений вижу много (когда-то я и сам был в роли объясняющего),
поэтому думаю лишней тема не будет.
Ну это на самом деле был юмор, примерно как когда-то сказал Костя Пушкин на горячем стуле.

- Твой совет начинающим юмористам?
- Ребят… Не надо!

А тему конечно надо сделать. Давно пора.
0
0 / 0 / 0
Регистрация: 21.03.2013
Сообщений: 4
23.03.2013, 00:21  [ТС]
Спасибо огромное наконец-то разобралась во всем вы уж не серчайте, все когда-то были новичками
Тема закрыта.
0
 Аватар для Antenka
56 / 56 / 0
Регистрация: 15.03.2013
Сообщений: 88
23.03.2013, 00:40
Цитата Сообщение от Victoria91 Посмотреть сообщение
вы уж не серчайте, все когда-то были новичками
Кто серчает-то?
Главное, что разобрались)
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
23.03.2013, 00:40
Помогаю со студенческими работами здесь

Разработка программы для решения задач по использованию объектно-ориентированного языка программирования
Народ очень нужна ваша помощь,я пишу курсовую по теме ''Розробка програми для розвязування задач з використання обьектно-ориентованои мови...

Объектно-ориентированное программирование: Разработка класса строка
НУЖНА ПОМОЩЬ Разработка класса строка Задание Разработать класс String определив для него методы: • копирования строк,...

Разработка структуры базы данных, объектно-ориентированный SQL
Имеется модель данных: Маршрут (код_маршрута, пункт_отправления, пункт_прибытия, время_отправления, время_прибытия, продолжительность) ...

Объектно-ориентированное программирование на языке Java
Помогите пжлста!Необходимо создать приложение, в котором имеются три класса: fclass1, fclass2, fclass3. В классе fclass2 содержится метод...

Пожалйста. По объектно ориентированному програмированию java
Преподаватель дал 3 задачи по объектно ориентированному програмированию и сказал до завтра надо сделать на java. Помогите пожалуйсто!!! ...


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

Или воспользуйтесь поиском по форуму:
19
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Основы отладки веб-приложений на SDL3 по USB и Wi-Fi, запущенных в браузере мобильных устройств
8Observer8 07.02.2026
Содержание блога Браузер Chrome имеет средства для отладки мобильных веб-приложений по USB. В этой пошаговой инструкции ограничимся работой с консолью. Вывод в консоль - это часть процесса. . .
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
SDL3 для Web (WebAssembly): Установка Emscripten SDK (emsdk) и CMake для сборки C и C++ приложений в Wasm
8Observer8 30.01.2026
Содержание блога Для того чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. . . .
SDL3 для Android: Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru