לוגו אתר Fresh          
 
 
  אפשרות תפריט  ראשי     אפשרות תפריט  צ'אט     אפשרות תפריט  מבזקים     אפשרות תפריט  צור קשר     חץ שמאלה ‎print ‎"Hello World!"; if‎ ‎not rules.‎know ‎then rules.‎read(); חץ ימינה  

לך אחורה   לובי הפורומים > מחשבים > תכנות ובניית אתרים
שמור לעצמך קישור לדף זה באתרי שמירת קישורים חברתיים
תגובה
 
כלי אשכול חפש באשכול זה



  #1  
ישן 23-04-2005, 12:27
צלמית המשתמש של EMC~2
  EMC~2 EMC~2 אינו מחובר  
 
חבר מתאריך: 29.10.04
הודעות: 50
שאלה מה דעתכם על הקוד הבא... :-)

אז כתבתי פה משהו ממש נחמד כי מישהו ביקש ממני, מה דעתכם?

קוד:
<?php class HelloWorldController { private $model; function __construct($model) { $this->model = $model; } function handleEvent($args) { $this->model->setStrategy($args[2]); $this->model->addText($args[1]); } } class HelloWorldModel { private $text; private $observers = array(); private $strategy; function attach($observer) { $this->observers[] = $observer; } function getData() { $facade = new HelloWorldFacade($this->strategy); return $facade->getHelloWorld().$this->text."\n"; } function addText($text='') { $this->text = $text; $this->notify(); } function setStrategy($strategy) { $this->strategy = $strategy; } function notify() { foreach ($this->observers as $observer) { $observer->update(); } } } class HelloWorldView { private $model; function initialize($model) { $this->model = $model; $model->attach($this); return $this->makeController(); } function makeController() { return new HelloWorldController($this->model); } function update() { $this->display(); } function display() { echo $this->model->getData(); } } class HelloWorld { function execute() { return "Fuck The World, I'm Here To Stay!!!"; } } class HelloWorldDecorator { private $helloworld; function __construct($helloworld) { $this->helloworld = $helloworld; } function execute() { return $this->helloworld->execute(); } } abstract class HelloWorldEmphasisStrategy { abstract function emphasize($string); } class HelloWorldBangEmphasisStrategy extends HelloWorldEmphasisStrategy { function emphasize($string) { return $string."!"; } } class HelloWorldRepetitionEmphasisStrategy extends HelloWorldEmphasisStrategy { function emphasize($string) { return $string." and ".$string." again"; } } class HelloWorldEmphasizer extends HelloWorldDecorator { private $strategy; function HelloWorldEmphasizer($helloworld,$strategy) { $this->strategy = $strategy; parent::__construct($helloworld); } function execute() { $string = parent::execute(); return $this->strategy->emphasize($string); } } class HelloWorldStrategyFactory { static function make($type) { if ($type == 'repetition') return self::makeRepetitionStrategy(); return self::makeBangStrategy(); } static function makeBangStrategy() { return new HelloWorldBangEmphasisStrategy; } static function makeRepetitionStrategy() { return new HelloWorldRepetitionEmphasisStrategy; } } class HelloWorldFormatter extends HelloWorldDecorator { function execute() { $string = parent::execute(); return $string."\n"; } } class HelloWorldFacade { private $strategy; function __construct($strategyType) { $this->strategy = HelloWorldStrategyFactory::make($strategyType); } function getHelloWorld() { $formatter = new HelloWorldFormatter( new HelloWorldEmphasizer( new HelloWorld,$this->strategy)); return $formatter->execute(); } } $model = new HelloWorldModel; $view = new HelloWorldView; $controller = $view->initialize($model); $controller->handleEvent($_SERVER['argv']); ?>


emc~2
_____________________________________
"כשכל הדרכים נחסמות, המוחות המבריקים באמת, פורצים את הגבולות"

תגובה ללא ציטוט תגובה עם ציטוט חזרה לפורום
  #4  
ישן 23-04-2005, 13:09
  דקל דקל אינו מחובר  
 
חבר מתאריך: 20.02.03
הודעות: 2,396
בתגובה להודעה מספר 3 שנכתבה על ידי EMC~2 שמתחילה ב "נעלבתי!!!!"

חבל שנעלבת, אולם לדעתי מי שצריך להיעלב זה כותב הקוד המקורי (שהוא כאמור Harry Fuecks).
משום מה ההבדלים בין הקוד שלו (המקורי) ובין הקוד שלך (ההעתק), הינם שבקוד שלך אין את ההערות המקוריות שלו (אשר הראשונה בהן מסבירה כי הקוד מבוסס על העקרונות המדוברים בספר POSA) והבדל נוסף הינו בשורה 72 (בקוד שלך) שהמקורית הינה return "Hello world"; ואילו אצלך שינית אותה ל return "Fuck The World, I'm Here To Stay!!!";.
אשמח לדעת מה העיקרון עליו דיבר המרצה שלך ואיזה המשך אתה הוספת.
ולכל המעוניין בקוד המקור:
קוד PHP:
<?php
/**************************************************  ******************
Model-View-Controller implementation according to POSA
(Pattern-Oriented Software Architecture
  http://www.hillside.net/patterns/books/Siemens/book.html)
**************************************************  ******************/

class HelloWorldController {
    private 
$model;
    function 
__construct($model) {
        
$this->model $model;
    }

    function 
handleEvent($args) {
        
$this->model->setStrategy($args[2]);
        
$this->model->addText($args[1]);
    }
}


class 
HelloWorldModel {
    private 
$text;
    private 
$observers = array();
    private 
$strategy;
    
    function 
attach($observer) {
        
$this->observers[] = $observer;
    }

    function 
getData() {
        
$facade = new HelloWorldFacade($this->strategy);
        return 
$facade->getHelloWorld().$this->text."\n";
    }

    function 
addText($text='') {
        
$this->text $text;
        
$this->notify();
    }

    function 
setStrategy($strategy) {
        
$this->strategy $strategy;
    }
    
    function 
notify() {
        foreach (
$this->observers as $observer) {
            
$observer->update();
        }
    }
}

class 
HelloWorldView {
    private 
$model;

    function 
initialize($model) {
        
$this->model $model;
        
$model->attach($this);
        return 
$this->makeController();
    }

    function 
makeController() {
        return new 
HelloWorldController($this->model);
    }

    function 
update() {
        
$this->display();
    }

    function 
display() {
        echo 
$this->model->getData();
    }
}


/**************************************************  *******************
"Business logic"
**************************************************  ******************/

class HelloWorld {
   function 
execute() {
       return 
"Hello world";
   }
}

class 
HelloWorldDecorator {
   private 
$helloworld;
   function 
__construct($helloworld) {
       
$this->helloworld $helloworld;
   }

   function 
execute() {
       return 
$this->helloworld->execute();
   }
}

abstract class 
HelloWorldEmphasisStrategy {
    abstract function 
emphasize($string);
}

class 
HelloWorldBangEmphasisStrategy extends HelloWorldEmphasisStrategy {
    function 
emphasize($string) {
       return 
$string."!";
    }
}

class 
HelloWorldRepetitionEmphasisStrategy extends HelloWorldEmphasisStrategy {
    function 
emphasize($string) {
       return 
$string." and ".$string." again";
    }
}

class 
HelloWorldEmphasizer extends HelloWorldDecorator {
   private 
$strategy;
   function 
HelloWorldEmphasizer($helloworld,$strategy) {
       
$this->strategy $strategy;
       
parent::__construct($helloworld);
   }

   function 
execute() {
       
$string parent::execute();
       return 
$this->strategy->emphasize($string);
   }
}

class 
HelloWorldStrategyFactory {
    static function 
make($type) {
        if (
$type == 'repetition') return self::makeRepetitionStrategy();
        return 
self::makeBangStrategy();
    }

    static function 
makeBangStrategy() {
        return new 
HelloWorldBangEmphasisStrategy;
    }
    static function 
makeRepetitionStrategy() {
        return new 
HelloWorldRepetitionEmphasisStrategy;
    }
}

class 
HelloWorldFormatter extends HelloWorldDecorator {
   function 
execute() {
       
$string parent::execute();
       return 
$string."\n";
   }
}

class 
HelloWorldFacade {
    private 
$strategy;
    function 
__construct($strategyType) {
        
$this->strategy HelloWorldStrategyFactory::make($strategyType);
    }

    function 
getHelloWorld() {
        
$formatter = new HelloWorldFormatter(
                new 
HelloWorldEmphasizer(
                    new 
HelloWorld,$this->strategy));
        return 
$formatter->execute();
    }
}

$model = new HelloWorldModel;
$view = new HelloWorldView;
$controller $view->initialize($model);
$controller->handleEvent($_SERVER['argv']);

?>


בברכת חג שמח,
דקל
_____________________________________
"מתכנת זה אדם שפותר בעיה שעל קיומה לא ידעת, בדרך שאינך מבין"

תגובה ללא ציטוט תגובה עם ציטוט חזרה לפורום
  #5  
ישן 23-04-2005, 13:21
צלמית המשתמש של EMC~2
  EMC~2 EMC~2 אינו מחובר  
 
חבר מתאריך: 29.10.04
הודעות: 50
בתגובה להודעה מספר 4 שנכתבה על ידי דקל שמתחילה ב "חבל שנעלבת, אולם לדעתי מי..."

המרצה שלנו הראה לנו חצי קוד שהוא לקח מאיזה אתר כשהרעיון שהוא דיבר עליו הוא ליצור פלט למסך אבל בצורה הכי מסובכת שאפשרית, אחד מהכיתה כתב לו משהו בסביבות ה200 שורות קוד ומשום מה הוא פסל לו את העבודה (שלחנו לו אתמול בלילה וקיבלנו תשובות היום), משום מה הוא אמר שהוא די אוהב את הקוד שלי מכיוון שזה תואם למה שהוא הולך להסביר לנו בכיתה.

אני ממש לא מאותם אנשים שעושים ctl-c/v לקודים שלהם, להפיך אני מעדיף לשבור את הראש על דברים מסוימים לדוגמה היום אני עובד על אפליקציית PHP_GTK שממש נראת לי חמודה, אני אעלה אותה אם אתם מעונינים. במקביל לנושא הקודם אני אשלח מייל לכותב הקוד ואציע לו כמה אופציות לדוגמת הקוד של חבר שלי מהכיתה. אולי יצא מזה משהו

חג שמח
_____________________________________
"כשכל הדרכים נחסמות, המוחות המבריקים באמת, פורצים את הגבולות"

תגובה ללא ציטוט תגובה עם ציטוט חזרה לפורום
  #6  
ישן 23-04-2005, 13:46
  דקל דקל אינו מחובר  
 
חבר מתאריך: 20.02.03
הודעות: 2,396
בתגובה להודעה מספר 5 שנכתבה על ידי EMC~2 שמתחילה ב "המרצה שלנו הראה לנו חצי קוד..."

נחמד שהחלטת להתעלם לחלוטין מעצם העובדה שהעתקת קוד שלם ולקחת זכויות יוצרים עליו. צר לי לאכזב אותך - זה לא עובד ככה.
אמרת שהמרצה שלך כתב לכם חצי קוד (שהוא לקח מאתר אינטרנט כלשהו) ואתם הייתם צריכים להמשיך אותו. בוא נגיד שהמרצה באמת לקח חצי קוד מאתר אינטרנט, ונגיד גם שהוא לקח חצי מהקוד שכותבת המאמר כתב. לא ברור לי איך ההמשך שלך ל"חצי קוד" של המורה נתן בדיוק את אותו קוד גמור של כותב המאמר (אלא אם המורה שלך לקח את כל הקוד... ואתה פשוט העתקת את השורת פלט).
אשמח לדעת איפה אתה לומד ובאיזה מסגרת. מעטות המסגרות כיום בהן מלמדים PHP (אם בכלל קיימות), וגם אם כן - הקורסים הללו בד"כ לא מתקדמים ומאפשרים פיתוח עתידי. אשמח לדעת גם מי הוא המרצה שלך (שעובד בשישי בלילה).
מצטער, אבל העניין עדיין נראה לי תמוה.

מקווה שבכל זאת טעיתי ותוכל להבהיר את העניין.
בברכה, דקל
_____________________________________
"מתכנת זה אדם שפותר בעיה שעל קיומה לא ידעת, בדרך שאינך מבין"

תגובה ללא ציטוט תגובה עם ציטוט חזרה לפורום
תגובה

כלי אשכול חפש באשכול זה
חפש באשכול זה:

חיפוש מתקדם
מצבי תצוגה דרג אשכול זה
דרג אשכול זה:

מזער את תיבת המידע אפשרויות משלוח הודעות
אתה לא יכול לפתוח אשכולות חדשים
אתה לא יכול להגיב לאשכולות
אתה לא יכול לצרף קבצים
אתה לא יכול לערוך את ההודעות שלך

קוד vB פעיל
קוד [IMG] פעיל
קוד HTML כבוי
מעבר לפורום



כל הזמנים המוצגים בדף זה הם לפי איזור זמן GMT +2. השעה כעת היא 05:12

הדף נוצר ב 0.04 שניות עם 12 שאילתות

הפורום מבוסס על vBulletin, גירסא 3.0.6
כל הזכויות לתוכנת הפורומים שמורות © 2024 - 2000 לחברת Jelsoft Enterprises.
כל הזכויות שמורות ל Fresh.co.il ©

צור קשר | תקנון האתר