1 / 1 / 0
Регистрация: 03.06.2016
Сообщений: 17

Решение сортировки с ООП

08.04.2018, 14:09. Показов 981. Ответов 5
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Есть задача.
Есть магазин. В нем есть мобильные телефоны, они могут быть Android и IOS. У каждого свои поля. Нужно отсортировать к примеру Android по версии андроида. И сделать выборку по версии .

Как решал я.
Создал абстрактный класс Phone.
Создал 2 класса PhoneAndroid и PhoneIOS которые заэкстендил от Phone.
Далее создал класс Shop. В нем ArrayList <Phone>.

к примеру мне надо вывести Телефоны Android с 5-й до 7-й версии.

Создаю метод
Java
1
2
3
4
5
6
7
8
public void showAndroid(){
        for (Phone p: phoneList
             ) {
            if(p.getPrice() > 5000 && p.getPrice() < 20000){
                System.out.println(p.toString());
            }
        }
    }
Но получается я не могу так получить доступ к полю version. Так как в IOS допустим такого поля нет. И в коллекции меня храняться объекты как Android так и IOS.

Помогите разобраться.
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
08.04.2018, 14:09
Ответы с готовыми решениями:

Поиск и решение ошибки в ООП
Добрый день,нужна помощь! Начал изучать java,дошел до ООП и в примере создают новый класс &quot;кот&quot;,который хотят использовать в...

Нужно найти решение в ООП и QT
Привет всем, начал &quot;изучать&quot; ООП буквально 2-3 дня и столкнулся с такой проблемой, для Вас возможно смешная, но всё же: как передать...

Решение задачки посредством ООП
Ребята, доброе утро ! Дайте совет пожалуйста новичку :pardon: Есть условие: Напишите программу, читающую массив из 10 чисел и печатающий...

5
Эксперт Java
3639 / 2971 / 918
Регистрация: 05.07.2013
Сообщений: 14,220
08.04.2018, 14:15
либо про полиморфизм читай, либо про instanceof (лучше первое)
0
1 / 1 / 0
Регистрация: 03.06.2016
Сообщений: 17
08.04.2018, 14:34  [ТС]
Кто подскажет как правильно сортировать в таком случае?
0
Эксперт функциональных языков программированияЭксперт Java
 Аватар для korvin_
4575 / 2774 / 491
Регистрация: 28.04.2012
Сообщений: 8,779
09.04.2018, 06:51
Цитата Сообщение от LoGwi-N Посмотреть сообщение
Кто подскажет как правильно сортировать в таком случае?
Оракул подскажет.
0
614 / 488 / 175
Регистрация: 02.03.2010
Сообщений: 1,238
09.04.2018, 08:25
Не оптимально, но, может быть поможет:

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
public class Main {
    
    public static void main(String[] args) {
        Shop shop = new Shop(Arrays.asList(new Android(), new IOS(), new IOS()));
        System.out.println(shop.getPhones(Android.class).size());
        System.out.println(shop.getPhones(IOS.class).size());
    }
}
 
class Shop {
    
    private final List<Phone> phones;
    
    public Shop() {
        this.phones = new ArrayList<>();
    }
 
    public Shop(List<Phone> phones) {
        this.phones = phones;
    }
    
    public List<Phone> getPhones() {
        return Collections.unmodifiableList(phones);
    }
    
    public <T extends Phone> List<T> getPhones(Class<T> phoneType) {
        return phones.stream()
              .filter(ph -> ph.getClass().isAssignableFrom(phoneType))
              .map(ph -> (T) ph)
              .collect(Collectors.toList());
    }
}
 
abstract class Phone {
}
 
class Android extends Phone {
}
 
class IOS extends Phone {
}
Добавлено через 1 минуту
Параметризованный метод getPhones вернет List с нужным типом телефонов, где будут доступны методы именно этих классов, в частности - нужный вам version который отдает.
0
 Аватар для Aviz__
2744 / 2053 / 507
Регистрация: 17.02.2014
Сообщений: 9,472
09.04.2018, 09:54
В классах PhoneAndroid и PhoneIOS создай поля tipeOS и по ниму делай выборку, а по другим параметрам сортировку. Если уж совсем лень переписывать...
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
09.04.2018, 09:54
Помогаю со студенческими работами здесь

[ООП] Решение ошибок с построением многофайлового проекта
Здравствуйте. Появилась нужда создать большой проект с большим количеством классов, конечно, разбивая их на разные .cpp и .h файлы. Но...

Решение задачи. Насколько верна матем. часть и стилистика ООП?
Новичок в Java - не судите строго, но насколько корректно решена задача с точки зрения математики и принципов ООП. Можете дать советы? ...

Единственно ли решение задачи сортировки и почему?
единственно ли решение задачи сортировки и почему? Добавлено через 19 минут Можно ли сказать, что не единственное т.к. Сортировки...

Реализовать все алгоритмы сортировки, оформив решение в виде функций ввода, вывода и обработки массивов
Здравствуйте народ,помогите в решении данной задачки с помощью подпрограммы: Дан массив из N элементов. Отсортировать по возрастанию...

Изучаю Python, сейчас учу основы ООП, где можно найти задачи по ООП
Скиньте пожалуйста источники с задачами(желательно на русском)


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

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

Новые блоги и статьи
Символьное дифференцирование
igorrr37 13.02.2026
/ * Программа принимает математическое выражение в виде строки и выдаёт его производную в виде строки и вычисляет значение производной при заданном х Логарифм записывается как: (x-2)log(x^2+2) -. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
Установка Qt-версии Lazarus IDE в Debian Trixie Xfce
volvo 10.02.2026
В общем, достали меня глюки IDE Лазаруса, собранной с использованием набора виджетов Gtk2 (конкретно: если набирать текст в редакторе и вызвать подсказку через Ctrl+Space, то после закрытия окошка. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru