Форум программистов, компьютерный форум, киберфорум
PHP: ООП
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/5: Рейтинг темы: голосов - 5, средняя оценка - 5.00
11 / 11 / 1
Регистрация: 04.03.2013
Сообщений: 62
1

Построение классов

28.08.2013, 11:01. Показов 897. Ответов 7
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Добрый день! Пытаюсь реализовать проект в ООП.
Задача стоит следующая:
1) Есть некоторые статистические таблицы(10-20 полей), которые заполняют пользователи
2) На основе введенных данных рассчитываются некоторые показатели (обычно что-то делится на что-то и выражается в %, хотя некоторые берутся напрямую от пользователей)
3) Дальше эти данные показатели обрабатываются, выставляются баллы и выстраивается рейтинг.

Для 1) создал для каждой таблицы свою сущность с полями показателями(хотя это мне тоже не нравится, почему-то кажется что нужно создавать сущности "Показатель", а потом их как-то агрегировать в сущность "Таблица")

Теперь не знаю как реализовать 2) - то ли нужно расширить в 1) добавив расчетные показатели или наследовать как-то или создавать новый класс и передавать например в конструктор...

3) нужно как-то привязать к каждому расчетному показателю баллы и алгоритм выставления баллов.

Буду благодарен за любую помощь
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
28.08.2013, 11:01
Ответы с готовыми решениями:

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

Построение иерархии классов
а есть ли так сказать, блок схема, между тем, как работает программа? Точнее от класса к методу и...

построение диаграмм классов
Построить диаграмму классов по тех.заданию

Построение иерархии классов
1) Разработать методы (не менее 3-х) и свойства (не менее 3-х) для каждого из определяемых классов....

7
2432 / 2282 / 594
Регистрация: 27.05.2011
Сообщений: 7,801
28.08.2013, 16:07 2
Цитата Сообщение от DennisRU777 Посмотреть сообщение
2) - то ли нужно расширить в 1) добавив расчетные показатели или наследовать как-то или создавать новый класс и передавать например в конструктор...
Что значит нужно? Нужно кому? Вы хотите чтобы за вас решили как вы будете писать свой код? Или вы решили что есть какое-то одно верное решение и если сделать иначе, то все рухнет к чертям?
1
11 / 11 / 1
Регистрация: 04.03.2013
Сообщений: 62
28.08.2013, 19:07  [ТС] 3
Опыта в ООП почти нет. Хотелось бы получить совет.
Попробую на примере(взят с потолка, но смысл такой же).
Есть 2 показателя:
1) урбанизированность, если больше 70% то ставим за это 5 баллов, если больше 50% то 3 балла
2) средняя з/п в регионе, если больше 20 т.р. то 3 балла, если больше 30, то 7 баллов

При этом при расчете 1) не можем положиться на пользователя запрашиваем у пользователя

PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
//Данные для этого класса запрашиваем у пользователя
class Basic{
    public village; //кол-во жителей региона прожив в деревнe
    public town; //кол-во жителей в городах
    public salary; //средняя з/п в регионе
}
 
class Calculate{
   public urbanization;
   public salary;
}
//инициализация объекта base класса Basic
...
$calc = new Calculate();
$calc -> urbanization = $base->town/( $base->town+$base->village);
$calc ->salary = $base->salary;
//либо добавить "расчетные" показатели в базовый класс
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
class Basic{
    public village; //кол-во жителей региона прожив в деревнe
    public town; //кол-во жителей в городах
    public salary; //средняя з/п в регионе
    private urbanization;
   
    pubplic setUrbanization(){
       $pupils = $this->town+$this->village;
       if ($people > 0){
          $this->urbanization = $this->town/$people;
       }
       
    }
    
}
0
1931 / 1522 / 703
Регистрация: 17.11.2012
Сообщений: 6,585
29.08.2013, 00:32 4
первое, нужно так
PHP
1
2
3
4
public $village; //кол-во жителей региона прожив в деревнe
    public $town; //кол-во жителей в городах
    public $salary; //средняя з/п в регионе
    private $urbanization;
второе, откуда взялась переменная $people в методе setUrbanization()
третье, каким образом данные попадают в свойства класса
1
11 / 11 / 1
Регистрация: 04.03.2013
Сообщений: 62
29.08.2013, 08:31  [ТС] 5
Цитата Сообщение от fanatikus Посмотреть сообщение
второе, откуда взялась переменная $people в методе setUrbanization()
третье, каким образом данные попадают в свойства класса
2) опечатался
3) Класс Base заполняется пользователем через форму, то каким образом заполнять расчетные данные для меня большой вопрос, самый простой вариант это в контролере каждой свойство вручную инициализировать( но как-то не очень...)
Либо, если идти по первому пути (2 класса), то объект первого класса передавать в конструктор второго.
И тут опять всплывает сложность с баллами. Логически они относятся к полям только расчетных данных, поэтому вроде есть смысл разбивать. Получается, что в значении поля нужно будет хранить и расчетное значение и кол-во баллов...
0
1931 / 1522 / 703
Регистрация: 17.11.2012
Сообщений: 6,585
29.08.2013, 15:41 6
Цитата Сообщение от DennisRU777 Посмотреть сообщение
Опыта в ООП почти нет. Хотелось бы получить совет.
Попробую на примере(взят с потолка, но смысл такой же).
Есть 2 показателя:
1) урбанизированность, если больше 70% то ставим за это 5 баллов, если больше 50% то 3 балла
2) средняя з/п в регионе, если больше 20 т.р. то 3 балла, если больше 30, то 7 баллов
конкретный пример, можно реализовать как-то так
PHP
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
 class Basic{
  
    public $salary; //средняя з/п в регионе
    public $urbanization;
    public $ball;//количество баллов
   
    public function __construct($v,$t,$s)
    {
        $pupils = $t+$v;
        if ($pupils > 0){
          $this->urbanization = $t/$pupils;
       }
          $this->salary = $s;
    }
            
    public  function setBall(){
        if($this->urbanization > 70){
            $ballUrbanization = 5;
            }
        elseif($this->urbanization < 70 and $this->urbanization > 50){
            $ballUrbanization = 3;
            }
        else{ 
            $ballUrbanization = 0; 
            
            }
        if($this->salary > 30000){
            $ballSalary = 7;
            }
        elseif($this->salary < 30000 and $this->urbanization > 20000){
            $ballSalary = 3;
            }
        else{
            $ballSalary = 0;
            }
       $this->ball= $ballUrbanization+$ballSalary;
    }
    public function saveBall(){
        //сохраняете балы
    }
}
1
113 / 70 / 2
Регистрация: 31.07.2010
Сообщений: 337
31.08.2013, 06:35 7
Неаккуратно...
PHP
1
2
3
4
5
        if($this->salary > 30000){
            $ballSalary = 7;
            }
        elseif($this->salary < 30000 and $this->urbanization > 20000){
            $ballSalary = 3;
А если ровно 30000?
0
1931 / 1522 / 703
Регистрация: 17.11.2012
Сообщений: 6,585
01.09.2013, 12:41 8
Цитата Сообщение от nubo Посмотреть сообщение
Неаккуратно...
Согласен, недосмотрел
0
01.09.2013, 12:41
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
01.09.2013, 12:41
Помогаю со студенческими работами здесь

Построение диаграммы классов по коду
Натолкните на мысль, как построить диаграмму классов по этому коду......

Множественное наследование. Построение производных классов
Необходимо построить иерархию классов согласно схемы наследования. Каждый класс должен содержать...

Построение иерархии классов с использованием наследования
Доброго времени суток. У меня вот такая проблема. Недавно взял подкурс по С#. ПРоблема в том, что я...

Построение системы классов плоских геометрических фигур
Доброго времени суток, уважаемые пользователи, модераторы и администраторы форума! Очень нуждаюсь...

Построение иерархии из следующих классов: бумага, газета, книга, журнал, учебник
Здравствуйте, можете помочь с построением иерархии из следующих классов: бумага, газета, книга,...

Разработать систему классов по заданной теме. Обеспечить соответствующую функциональность классов
Блин, люди, помоги с задачей :( А то зачет не поставят :( Разработать систему классов по...


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

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru