Модераторы: skyboy, MoLeX, Aliance, ksnk
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Посмотрите, пожалуйста, я правильно понял? классы->объекты->свойства 
V
    Опции темы
slang
Дата 19.7.2007, 20:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

Репутация: -1
Всего: 0



Решил попробовать использовать ООП. Задачку придумал следующую:
Класс должен обрабатывать информацию по  пользователям и их авто.
Код

Класс Пользователь
    Объект User
        Свойство id
        Свойство name
        Свойство login
        Свойство password
    Объект Avto
        Свойство id
        Свойство marka
        Свойство model

я правильно понял понятия класс/объект/свойство для этой задачи?

Это сообщение отредактировал(а) slang - 19.7.2007, 20:51


--------------------
Запчасти на иномарки www.avtograd55.ru.
Если есть время - зайдите и посоветуйте что исправить и что доработать.
PM MAIL WWW ICQ   Вверх
Mal Hack
Дата 19.7.2007, 20:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Мудрый...
****


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

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



Нет. Тут все - свойства, причем свойства "авто" - должно быть массивом двумерным, т.к. может быть у одного человека несколько автомашин.
http://board.mal-hack.net/lofiversion/index.php/t301.html - почитай.
PM ICQ   Вверх
slang
Дата 19.7.2007, 21:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

Репутация: -1
Всего: 0



С понятиями, вроде как разобрался smile.
В простом варианте получается начало как-то так?
Код

<?
class User    {
    var $id;
    var $name;
    var $login;
    var $pass;
    
    function AddUser($name, $login, $pass)    {
        print "<BR>добавляем юзера в базу";
        $id = 1;
        return $id;
    }
    function ReadUser($id)    {
        print "<BR>получаем инфо о юзере";
        $array[]=1;
        $array[]=2;
        $array[]=3;
        return $array;
    }
}

class Avto    {
    var $id;
    var $marka;
    var $model;
    
    function AddAvto($marka, $model, $id_user)    {
        print "<BR>добавляем авто в базу, id_user = $id_user";
        $id = 1;
        return $id;
    }
    function ReadAvto($id)    {
        //получаем инфо об авто;
        return $array;
    }
    function UserAvto($id_user)    {
        print "<BR>получаем список авто для заданного юзера";
        $id_avto_user[] = 1;
        $id_avto_user[] = 2;
        $id_avto_user[] = 7;
        return $id_avto_user;
    }
}

$user = & new User();
$id = $user -> AddUser("Вася Пупкин", "vasja", "пароль");
$info = $user -> ReadUser($id);
foreach ($info as $k=>$v)    {
    print "<BR>$k - $v";
}
$id_user = 1;
$avto[$id_user][1] = new Avto();
$id_avto = $avto [$id_user][1] -> AddAvto("Марка","Модель", $id_user);
$id_avto_user = $avto[$id_user][1] -> UserAvto($id_user);
foreach ($id_avto_user as $k=>$v)    {
    print "<BR>$k - $v";
}

?>


Это сообщение отредактировал(а) slang - 19.7.2007, 22:07


--------------------
Запчасти на иномарки www.avtograd55.ru.
Если есть время - зайдите и посоветуйте что исправить и что доработать.
PM MAIL WWW ICQ   Вверх
Mal Hack
Дата 19.7.2007, 22:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Мудрый...
****


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

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



Вроде бы так, только связь между объектами надо сделать другую.
Создаешь не два объекта, а один, но используешь наследование от второго класса.
И работаешь с единым объектом.
Тут еще надо бы чтобы вязь пользователя с машиной была такой: пользователь => машина, а у тебя наоборот.
PM ICQ   Вверх
slang
Дата 19.7.2007, 22:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

Репутация: -1
Всего: 0



кажется, понял:
Код

<?
class User extends Avto {
    var $id_user;
    function LoadUser ($id)    {
        //Определяем текущего юзера, касаемо которго происходят операции
        $this -> id_user = $id;
    }
    function AddUser($name, $login, $pass)    {
        //добавляем юзера в базу
        $id = 1;
        return $id;
    }
    function ReadUser($id)    {
        //получаем инфо о юзере
        $array[]=1;
        $array[]=2;
        $array[]=3;
        return $array;
    }
}

class Avto {
    function AddAvto($marka, $model, $id_user)    {
        //добавляем авто в базу
        $id = 1;
        return $id;
    }
    function ReadAvto($id)    {
        //получаем инфо об авто;
        return $array;
    }
    function UserAvto($id_user)    {
        //получаем список авто для заданного юзера
        $id_avto_user[] = 1;
        $id_avto_user[] = 2;
        $id_avto_user[] = 7;
        return $id_avto_user;
    }
}

$user = & new User();
print "<BR>добавляем юзера в базу";
$id_new_user = $user -> AddUser("Вася Пупкин", "vasja", "пароль");
print "<BR>id новой записи - $id_new_user";

print "<BR>Определяем текущего юзера, касаемо которого происходят операции";
$user -> LoadUser(1);

print "<BR>получаем инфо о юзере";
foreach ($user -> ReadUser($user->id_user) as $k=>$v)    {
    print "<BR>$k - $v";
}
print "<BR>добавляем авто в базу, id_user = " . $user->id_user;
$id_new_avto = $user -> AddAvto("Марка","Модель", $user->id_user);

print "<BR>получаем список авто для текущего юзера";
$id_avto_user = $user -> UserAvto($user->id_user);
foreach ($id_avto_user as $k=>$v)    {
    print "<BR>$k - $v";
}
?>

наследование сделать наоборот, не авто наследует от юзера, а наоборот smile

Это сообщение отредактировал(а) slang - 19.7.2007, 23:16


--------------------
Запчасти на иномарки www.avtograd55.ru.
Если есть время - зайдите и посоветуйте что исправить и что доработать.
PM MAIL WWW ICQ   Вверх
Mal Hack
Дата 19.7.2007, 23:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Мудрый...
****


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

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



Да, схема работы такая, только небольшая рекомендация, писать описания классов, которые используются в наследовании раньше того, который их наследует. Принцип определения переменных, так сказать, сначала пишем, потом используем. Пусть интерпретатор противоположное и пропустит, но это не корректо.
PM ICQ   Вверх
slang
Дата 19.7.2007, 23:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

Репутация: -1
Всего: 0



даже такие простые функции в оконцове займут очень много строк кода (формы с предустановленными вариантами значений марки/модели авто и т.д.), поэтому я эти классы хочу разместить в разных файлах и инклудить в index.php

PS: вроде как даже нравится начинает smile
Спасибо.


--------------------
Запчасти на иномарки www.avtograd55.ru.
Если есть время - зайдите и посоветуйте что исправить и что доработать.
PM MAIL WWW ICQ   Вверх
Mal Hack
Дата 20.7.2007, 17:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Мудрый...
****


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

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



Цитата(slang @  19.7.2007,  23:26 Найти цитируемый пост)
даже такие простые функции в оконцове займут очень много строк кода (формы с предустановленными вариантами значений марки/модели авто и т.д.), поэтому я эти классы хочу разместить в разных файлах и инклудить в index.php

Отдельно выносишь функции (методы), которые отвечают за функионл класса, отдельно те, которые хранят html формы для вывода.
Разносишь это на два класса, т.е. тебе по сути надо добавить к уже существующему класс UserSkin, к примеру и там сделать описаний функций, где будет дизайн, как в IPB.
Чтобы совметить делаешь очень просто:
$skin = new UserSkin();
$user = new User();
$user->skin = & $skin;
Или что-то подобное. Не хочу сильно тебе усложнять, но скажу сразу, что есть более красивые и тонкие решения данного вопроса, фактически решающих понятие "множественное наследование". Но зачастую, с програмной точки зрения они не очень корректны.
PM ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "PHP"
Aliance
IZ@TOP
skyboy
SamDark
MoLeX

Новичкам:

  • PHP редакторы собираются и обсуждаются здесь
  • Электронные книги по PHP, документацию можно найти здесь
  • Интерпретатор PHP, полную документацию можно скачать на PHP.NET

Важно:

  • Не брезгуйте пользоваться тегами [code=php]КОД[/code] для повышения читабельности текста/кода.
  • Перед созданием новой темы воспользуйтесь поиском и загляните в FAQ
  • Действия модераторов можно обсудить здесь

Внимание:

  • Темы "ищу скрипт", "подскажите скрипт" и т.п. будут переноситься в форум "Web-технологии"
  • Темы с именами: "Срочно", "помогите", "не знаю как делать" будут УДАЛЯТЬСЯ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, IZ@TOP, skyboy, SamDark, MoLeX, awers.

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


 




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


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

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