background image

Inżynieria Oprogramowania  

MVP 

 

Wydział Mechaniczny Politechniki Krakowskiej 

Instytut Informatyki Stosowanej 

Rok Akademicki 2011/2012, Grupa 13K3 

 

 

Rafał Polak 13k3 
29-01-2011

 

Sprawozdanie z Laboratorium Komputerowego  

Model View Presenter

 

 

 

 

 

 

1.  Ogólne informacje 

 

Wzorzec Projektowy 

–  to ogólne rozwiązanie często spotykanego problemu w 

specyficznym przypadku. Wzorce powstają z doświadczenia ekspertów w danej 
dziedzinie. 
 

MVP 

– jest to pochodna MVC (Model – View – Controler) wzorca oprogramowania. 

Podobnie jak MVC wykorzystywany jest do tworzenia interfejsów użytkownika, aby 
oddzielić warstwę aplikacji od warstwy komunikacji z użytkownikiem.  

Model ten oddziela od siebie warstwy aplikacji tworząc ją przejrzystą i hierarchiczną  
jednocześnie przyporządkowując warstwom odpowiednie zadania i polecenia 
podczas pracy programu. 

Warstwa Prezentacji odpowiada za funkcjonalności pomiędzy warstwą Modelem a 
Widokiem. W modelu MVC odpowiada za to Kontroler. Widok odpowiedzialny jest za 
obsługę zdarzeń interfejsu użytkownika UI, natomiast ostatnia warstwa odpowiada 

background image

za opisanie atrybutów, podmiotów i ról wewnątrz aplikacji, dzięki czemu zwiększa się 
inteligencja programu.  

 

 

 

 

 

2.  Cel MVP 

MVP jest wzorcem projektowym zaprojektowanym w celu ułatwienia automatycznego 

testowania urządzeń i oprogramowania na nich zainstalowanych. 

Model definiuje dane które mają być wyświetlane lub w jakiś inny sposób mogą wpłynąć na 

interfejs użytkownika. 

Widok odpowiada głównie za wyświetlanie danych z powyższego Modelu oraz bada czas i trasy 

powtórzeń.  

Prezenter działa z połączenia tych dwóch klas i jednocześnie podbiera dane z repozytoriów dla 

modelu oraz formaty do wyświetlenia w widoku.  

Widok jest elementem pasywnym, który przekazuje wszystkie informacje do prezentera. 

Prezenter gdy zostaje wywołany łączy się z Modelem i Widokiem pobierając od niego dane za 
pomocą metod. Następnie dopiero aktualizuje on model. Różne wersje MVP umożliwiają swobodę w 
odniesieniu do odwołań interakcji, zdarzeń i poleceń.  

 

 

 

3.  Cel Ćwiczenia 

Na ćwiczeniach stworzyliśmy aplikację opartą o model MVP, aby zobaczyć działanie modelu w 
praktyce. Niezbędne było utworzenie projektu składającego się z trzech wartsw Modelu, 
Prezentera i Widoku.  

Interfejs Modelu został zdefiniowany: 

namespace

 Model 


    

public

 

interface

 

IModel

 

    { 
        

Element

 getElement(); 

        

void

 setElement(

Element

 element); 

    } 
}

 

 

background image

Dołączyliśmy także klasę zdefiniowaną w interfejsie Modelu  tworzącą interfejs oraz klasę 

ELEMENT  zawierającą element będący testowymi danymi.  

namespace

 Model 


    

public

 

class

 

Model

 : 

IModel

 

    { 
        

private

 

Element

 element; 

 
        

public

 

Element

 getElement() 

        { 
            

if

 (element == 

null

                element = 

new

 

Element

(); 

 
            

return

 element; 

        } 
 
        

public

 

void

 setElement(

Element

 element) 

        { 
            

this

.element = element; 

        } 
    } 

 

namespace

 Model 


    

public

 

class

 

Element

 

    { 
        

public

 

string

 Imie { 

get

set

; } 

        

public

 

string

 Nazwisko { 

get

set

; } 

        

private

 

IList

<

string

> przedmioty; 

        

public

 

IList

<

string

> Przedmioty { 

get

 { 

return

 

this

.przedmioty; } } 

 
        

internal

 Element() 

        { 
            Imie = 

"Rafał"

            Nazwisko = 

"Pola"

            przedmioty = 

new

 

List

<

string

>(); 

            przedmioty.Add(

"Komunikacja Człowiek Komputer"

); 

            przedmioty.Add(

"Inzynieria Oprogramowania"

); 

            przedmioty.Add(

"Programowanie Obiektowe"

); 

        } 
 
 
    } 

 
 

Warstwa Prezentacji łącząca dwie skrajne warstwy posiada zdefiniowany interfejs oraz klasę 

odwołującą i komunikującą się z Modelem i Widokiem: 

 

namespace

 Prezenter 


    

public

 

interface

 

IPrezenter

 

    { 
        

string

 Imie { 

get

set

; } 

        

string

 Nazwisko { 

get

set

; } 

        

IList

<

string

> Przedmioty { 

get

; } 

 
        

void

 saveDate(); 

    } 

background image


 

namespace

 Prezenter 


    

public

 

class

 

Prezenter

 : 

IPrezenter

 

    { 
        Model.

IModel

 model; 

        Model.

Element

 element; 

        View.

IView

 view; 

 
        

public

 Prezenter(View.

IView

 view) 

        { 
            

this

.view = view; 

            model = 

new

 Model.

Model

(); 

            element = model.getElement(); 
            view.Imie = Imie; 
            view.Nazwisko = Nazwisko; 
            view.Przedmioty = Przedmioty; 
        } 
 
        

public

 

string

 Imie 

        { 
            

get

 

            { 
                

return

 element.Imie; 

            } 
            

set

 

            { 
                element.Imie = 

value

            } 
        } 
 
        

public

 

string

 Nazwisko 

        { 
            

get

 

            { 
                

return

 element.Nazwisko; 

            } 
            

set

 

            { 
                element.Nazwisko = 

value

            } 
        } 
 
        

public

 

IList

<

string

> Przedmioty 

        { 
            

get

 { 

return

 element.Przedmioty; } 

        } 
 
        

public

 

void

 saveDate() 

        { 
            

this

.element.Imie = 

this

.view.Imie; 

            

this

.element.Nazwisko = 

this

.view.Nazwisko; 

            model.setElement(

this

.element); 

        } 
    } 

 

Interfejs widoku został zdefiniowany w tej samej warstwie prezentacji.: 
 

namespace

 View 

background image

    

public

 

interface

 

IView

 

    { 
        

string

 Imie { 

get

set

; } 

        

string

 Nazwisko { 

get

set

; } 

        

IList

<

string

> Przedmioty { 

set

; } 

    } 

 

 

 

 
 

4.  Rezultat i Wniosek 

W Prosty i szybki sposób można budować rozwinięte aplikację zachowując hierarchię w kodzie i 
wykonywaniu się programu.  

MVP pozwala implementować różne interfejsy użytkownika i w prosty sposób stosować wcześniej 
napisany kod, niczym wymiana szuflady.  

 

 Forma przedstawienia danych została zaimplementowana poniżej widoku, dzięki czemu można w 
łatwy i prosty sposób manipulować wyglądem programu  i jego edycją. Natomiast Model posiada 
niezbędne dane do przetworzenia przez program.