85
Metodyka programowania obiektowego Metodyka programowania obiektowego Zajęcia 1 Jacek Starzyński, IETiSIP PW

Metodyka programowania obiektowegoprpw.iem.pw.edu.pl/wyniki.21-3/mpo/mpo1.pdfMetodyka programowania obiektowego 18 PO: cel czy metoda Wiele źródeł przedstawia programowanie obiektowe

  • Upload
    others

  • View
    7

  • Download
    0

Embed Size (px)

Citation preview

  • Metodyka programowania obiektowego

    Metodyka programowania obiektowego

    Zajęcia 1

    Jacek Starzyński, IETiSIP PW

  • Metodyka programowania obiektowego

    2

    Program na dzisiaj

    ● Problemy inżynierii oprogramowania● Podstawy projektowania obiektowego: koncepcja

    obiektu i klasy, ● Relacje pomiędzy obiektami, hierarchia, dziedziczenie● Projektowanie struktury klas. Karty CRC.● Klasy abstrakcyjne i interfejsy, abstrakcyjne typy

    danych.● Kodowanie klas w Javie, narzędzia wspomagające na

    przykładzie Netbeans.

  • Metodyka programowania obiektowego

    3

    Perspektywa użytkownikaDlaczego w instrukcjach do samochodów nie spotyka się tekstów: ,,Producent nie odpowiada za szkody spowodowane nieprawidłowym działaniem tego samochodu lub jego podzespołów” ?

    Nie kupiłbym takiego samochodu... czemu więc płacę ciężkie pieniądze za programy, których instrukcje/gwarancje zawierają taki tekst ???

  • Metodyka programowania obiektowego

    4

    Dobry program● Robi to, co powinien (co najmniej)● Jest niezawodny● Jest mądrzejszy od użytkownika,

    grzeczny i pomocny● Jest tani● Został napisany na czas● Łatwo go poprawiać

  • Metodyka programowania obiektowego

    5

    Co to jest program?

    Algorytmy + Struktury Danych= Programy Niklaus Wirth, 1976

    ● Program to zapis algorytmów● Program działa w oparciu o dane● Relacje pomiędzy danymi,

    a działającymi na nich algorytmami decydują o jakości programu

  • Metodyka programowania obiektowego

    6

    Jak to naprawdę wygląda?Pamięć Procesor

  • Metodyka programowania obiektowego

    7

    Abstrakcja?

    AlgorytmAlgorytm

    Struktury danych

  • Metodyka programowania obiektowego

    8

    Zły programSpaghetti code10 dim i20 i = 030 i = i + 140 if i 10 then goto 9050 if i = 10 then goto 7060 goto 3070 print "Program Completed."80 end90 print i & " squared = " & i * i100 goto 30

    Przy większym problemie taki kod jest trudny do opanowania.

    (Przy dostatecznie dużym problemie trudno jest zapanować nad dowolnym kodem.)

  • Metodyka programowania obiektowego

    9

    Kryzys programowania

    ● Oprogramowanie jest niezbędnym składnikiem otaczającego nas świata:● coraz większej liczby urządzeń● coraz większej liczby usług

    ● Oprogramowanie jest coraz bardziej złożone● Wykształcenie dobrego programisty wymaga

    czasu.● Rynek nie chce na to czekać – potrzebuje

    coraz większej liczby linii kodu natychmiast!

  • Metodyka programowania obiektowego

    10

    Kryzys programowania, cd.

    ● Programowanie jest w dużej części działalnością wyjątkowo innowacyjną● stosunkowo mało ,,szablonów''● łatwo eksperymentować i prototypować

    ● Z powyższego względu P jest sztuką

    ● Jeśli tak, to wykształcenie dobrego programisty jest procesem niepewnym

  • Metodyka programowania obiektowego

    11

    Czego uczy się programistów?

    I have a small mind and can only comprehend one thing at a time. E. Dijkstra

    KISS: Keep It Simple, StupidJedna z podstawowych zasad programowania

    Nic nowego - ,,Brzytwa Ockhama'':Pluralitas non est ponenda sine

    necessitate. Podobno Wiliam Ockham

  • Metodyka programowania obiektowego

    12

    Czego niekoniecznie uczy się...

    Make everything as simple as possible, but not simpler.

    Albert Einstein

    For every difficult problemthere is always a simple answerand most of them are wrong.

    Clayton R. Paul

  • Metodyka programowania obiektowego

    13

    Jak radzimy sobie z kryzysem?● Adaptujemy procedury inżynierskie do

    tworzenia oprogramowania:● modelowanie● powtórne wykorzystanie sprawdzonych rozwiązań● modułowa budowa programów (upraszczanie złożoności)

    ● Tworzymy narzędzia wspomagające dobre praktyki:

    ● odpowiednie języki● odpowiednie programy● szablony (różnego rodzaju)

    ● Hierarchizujemy programistów: twórcy (architekci, projektanci) i użytkownicy

  • Metodyka programowania obiektowego

    14

    Procedury inżynierii: modelowanie

  • Metodyka programowania obiektowego

    15

    Procedury inżynierii: wzorce projektowe

  • Metodyka programowania obiektowego

    16

    Procedury inżynierii: budowa modułowa

  • Metodyka programowania obiektowego

    17

    Paradygmaty programowania

    ● Programowanie deklaratywne (logiczne,funkcyjne)

    ● Programowanie proceduralne (imperatywne)

    ● Programowanie obiektowe● Programowanie aspektowe

  • Metodyka programowania obiektowego

    18

    PO: cel czy metoda

    Wiele źródeł przedstawia programowanie obiektowe jako cel sam w sobie, utożsamiając pojęcia "program obiektowy" i "program dobry".

    Tymczasem PO jest po prostu najlepszą powszechnie wdrożoną metodą tworzenia dobrych programów, sprawdzającą się tym

    lepiej, im większy jest projekt.

    (ale PO nie jest idealne)

  • Metodyka programowania obiektowego

    19

    Paradygmat obiektowy Jest sprawdzonym sposobem działania, który wspomaga wspomniane metody wyjścia z kryzysu: wprowadza klasy - naturalne moduły programistyczne wspiera powtórne wykorzystanie sprawdzonego kodu umożliwia jego łatwe ulepszanie i dostosowywanie pozwala skalować poziom abstrakcji zwiększa bezpieczeństwo danych ułatwia wykorzystanie ,,cudzego'' kodu

  • Metodyka programowania obiektowego

    20

    Czym jest obiektowość?

    ● Program obiektowy jest zapisywany przy pomocy pojęć z dziedziny modelowanego zagadnienia

    ● Program obiektowy rozbija odpowiedzialność pomiędzy autonomiczne moduły o dobrze zdefiniowanej, rozłącznej funkcjonalności

  • Metodyka programowania obiektowego

    21

    Język modelowanego zagadnienia● Każdy program jest modelem pewnego

    wycinka rzeczywistości.● Model może być mniej lub bardziej zbliżony

    do zagadnienia, które opisuje.● Wyrazem tego ,,zbliżenia" są pojęcia

    stosowane w programie – mogą one być albo bliskie dziedzinie problemu, albo specyficzne dla języka informatyki.

    ● Obiektowość polega na tworzeniu programów zapisanych w notacji dziedziny problemu (lub możliwie blisko niej).

  • Metodyka programowania obiektowego

    22

    Język C:node_t *(tree[256]);node_t *temp;

    uint8_t *table;

    unsigned long ocrncs[256];

    int i;int j = 0;float fn = 0;

    double x[1024];

    JavaTree [] forest;Tree tmp;

    Counter occurences= new Counter();

    Pracownik [] za oga;ł

    URL mojaStrona;

    Connection con;

    Statement stmt;

    ArrayList myList;

    Dane blisko dziedziny

  • Metodyka programowania obiektowego

    23

    Algorytmy blisko dziedzinyfor( Pracownik prac: Załoga) prac.konto.dodaj( Premia.luty( prac )); Stos korespondencja;while( skrzynka.niePusta() ) korespondencja.dodaj( skrzynka.ostPrzesyłka() );

    Statement stmt = con.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE, ResultSet.CONCUR_READ_ONLY);ResultSet srs = stmt.executeQuery( "SELECT COF_NAME, PRICE FROM COFFEES");while (srs.next()) {

    String name = srs.getString("COF_NAME");float price = srs.getFloat("PRICE");System.out.println(name + " " + price);

    }

  • Metodyka programowania obiektowego

    24

    P proceduralne a P obiektowe

    ● Programowanie proceduralne:,,wojsko”

    Jak relacje dowódca-żołnierze

    ● Programowanie obiektowe:,,uniwersytet”

    Jak relacje profesor-doktoranci

  • Metodyka programowania obiektowego

    25

    Podział odpowiedzialności

    Każdy obiekt jest odpowiedzialny za pewien wycinek

    rzeczywistości.

  • Metodyka programowania obiektowego

    26

    Jak realizuje się obiektowość?● Program obiektowy jest z zasady zaprojektowany:

    ● najpierw ustalamy Co robimy?● potem: Jak to robimy?

    ● Program składa się z modułów, które są rozsądnie duże i złożone

    ● Podstawowe moduły realizowane są w postaci klas, które odpowiadają pojęciom z dziedziny problemulub w postaci grup klas (pakietów, komponentów)

    ● Klasy są narzędziem definiowania typów obiektów● Program składa się z obiektów posiadających stan

    i zachowanie i komunikujących się ze sobą w celu rozwiązania problemu.

  • Metodyka programowania obiektowego

    27

    Klasy i obiekty● Klasa określa typ obiektu

    ● klasę możemy rozumieć jako (częściową lub pełną) definicję obiektów

    ● klasa to także zbiór obiektów mających wspólne zachowanie (i strukturę)

    ● Każdy obiekt posiada:● stan● zachowanie● tożsamość

  • Metodyka programowania obiektowego

    28

    Składnia klasypublic class Contact { private String name; private String contact; private Char icon; public Contact( String name, String contact, char icon ) { this.name= name; this.contact= contact; this.icon= icon; } public String getName() { return name; } public void setName( String name ) { this.name= name; } .....}

  • Metodyka programowania obiektowego

    29

    Java – język obiektowy

    ● Powstaje od początku lat 90-tych do chwili obecnej (ostatnie duże zmiany – 2004)

    ● Przy projektowaniu duży nacisk położono na: przenośność, obiektowość, prostotę (;-)

    ● Prosta składnia, złożone biblioteki :-(● Zyskał popularność jako narzędzie do

    programowania w Internecie

  • Metodyka programowania obiektowego

    30

    Przenośność: kod pośredni i maszyna wirtualna

    NativeCompiler

    ● Kod Javy jest najczęściej kompilowany do przenośnego kodu pośredniego

    ● Ten kod pośredni składa się z plików zawierających pojedyncze klasy

    ● Klasy są zwykle uruchamiane za pośrednictwem wirtualnej maszyny Javy (JVM)

  • Metodyka programowania obiektowego

    31

    Tworzenie programu

    Edytor,CASE HelloWorld.java HelloWorld.class

    public class HelloWorld { public static void main( String [] args ) { System.out.println( “Hello World!” ); }}

    javac

    $vi HelloWorld.java$javac HelloWorld.java$java HelloWorldHello World!$

    JVM

  • Metodyka programowania obiektowego

    32

    Biblioteki, narzędzia

  • Metodyka programowania obiektowego

    33

    Przykładowa klasa

    import java.util.*;public class BasisPoint { private double x, y; private long no; static private long lastNo= 0; public BasisPoint( double x, double y ) { no= ++lastNo; setPosition( x, y ); } public BasisPoint( BasisPoint o ) { no++; setPosition( o.x, o.y ); }...

    konstruktor

    przeciążanie

  • Metodyka programowania obiektowego

    34

    Przykładowa klasa, c.d.... public long getNo() { return no; } public double getX() { return x; } public double getY() { return y; } public void setPosition( double x, double y ) { this.x= x; this.y= y; }...

    metody dostępowe( pamiętamy private double x, y; private long no; )

  • Metodyka programowania obiektowego

    35

    Przykładowa klasa, c.d.... public String toString() { return "bp" + no + "(" + x + "," + y + ")"; } public static long numberOfBP() { return lastNo; } public static void main( String [] args ) { Collection points= new LinkedList(); for( int i= 0; i < 10; i++ ) points.add( new BasisPoint( i, 10-i ) ); for( BasisPoint p : points ) System.out.println( p ); } }

  • Metodyka programowania obiektowego

    36

    Ćwiczenie 0

    ● Proszę wymyślić dowolną, prostą klasę● Proszę zapisać tę klasę w Javie● Proszę zaproponować sposób sprawdzenia

    poprawności utworzonego kodu

    ● Proszę zastanowić się, czy nie lepiej najpierw wymyślić testy, a dopiero potem pisać kod. Dlaczego?

  • Metodyka programowania obiektowego

    37

    Klasa – jednostka kodu

    ● Klasa jest w Javie także podstawową jednostką uruchomieniową● uruchamiamy wybraną klasę● pozostałe klasy są doładowywane do JVM w

    razie potrzeby● Klasa może być uruchamiana na różne

    sposoby● standardowo – za pomocą metody main● ale są też inne sposoby (aplety, wątki, ...)

  • Metodyka programowania obiektowego

    38

    Metoda main, wyjątki, argumenty

    public class Sum {public static void main( String [] args ) {

    int sum = 0;for( String s : args ) {

    try {sum += Integer.parseInt( s );

    } catch( NumberFormatException e ) {System.out.println( s + "to nie liczba" );

    }}System.out.printf( "---\nsuma = %d\n", sum );

    }}

  • Metodyka programowania obiektowego

    39

    Projektowanie architektury

    ● Po pierwsze określenie pożądanej funkcjonalności● Przypadki użycia – interakcja użytkownik-system● Scenariusze – pojawiają się w nich pojęcia, które

    przekształcimy w klasy● Po drugie obiektowa analiza dziedziny

    ● Obiektowy model dziedziny składa się z klas pojęciowych, ich atrybutów i powiązań między nimi

  • Metodyka programowania obiektowego

    40

    Przypadki użyciaUC1: Wystawienie faktury za studiaGłówny scenariusz

    1.Sekretarz pragnie wystawić fakturę2.Sekretarz wpisuje nazwisko studenta3.System wpisuje wysokość wniesionej opłaty4.Sekretarz drukuje fakturę

    Rozszerzenia3A.System nie może odnaleźć studenta

    3A.1.System prosi o ponowne podanie nazwiska (powrót do 2)

    2B.System odnalazł studenta, ale brak wpłaty3B.1.Koniec scenariusza (bez drukowania faktury)

  • Metodyka programowania obiektowego

    41

    Analiza obiektowaWarcaby

    ● W WARCABY gra dwóch GRACZY● GRA jest rozgrywana na PLANSZY● PLANSZA składa się z PÓL● Na POLU może stać tylko jeden PIONEK● GRA polega na wykonywaniu RUCHÓW

    PIONKAMI● RUCHY wykonywane są przez GRACZY na

    przemian● ...

  • Metodyka programowania obiektowego

    42

    Karty CRC

    Class (Klasa)Responsibilities(Obowiązki)

    Collaborators(Współpracownicy)

    Kontakt

    KontaktZarządza danymipojedynczegokontaktuKsiążkaTelefoniczna

  • Metodyka programowania obiektowego

    43

    Karty CRC-- przykład

    ZadanieNapisać program, który przeczyta plik

    składający się z wielu (ale bez przesady) linii opisujących wyniki sprawdzianu. Każda linia zawiera imię i nazwisko (studenta) oraz liczbę punktów uzyskanych na sprawdzianie. Program ma wystawiać oceny i wypisywać listę z ocenami. Powinien umożliwiać sortowanie listy według różnych kryteriów.

    Waleria Skorupka 93Jan Kowalski 51Adam Nowak 99Zofia Grzyb 72Roman Leń 22

    Zofia Grzyb 4Jan Kowalski 3Roman Leń 2Adam Nowak 5Waleria Skorupka 5

    Skalaocen!

  • Metodyka programowania obiektowego

    44

    Przykład, c.d.

  • Metodyka programowania obiektowego

    45

    Ćwiczenie 1

    Dobieramy się w zespoły 3-4-osobowe.Projektujemy klasy dla systemu KayakRodeoAnalizujemy trzy przypadki użycia:

    ● Zgłoszenie zawodnika● Wydruk listy startowej● Wprowadzenie oceny przejazdu

  • Metodyka programowania obiektowego

    46

    Narzędzia obiektowości

    ● Abstrakcja● Enkapsulacja● Dziedziczenie● Polimorfizm

  • Metodyka programowania obiektowego

    47

    Abstrakcja

    System powinien wiedzieć o obiekcie tylko tyle, ile jest niezbędne do jego używania.

    Każdy (prawie) obiekt jest autonomicznym elementem, który może wykonywać określone zadania i/lub zmieniać swój stan. Obiekt jest abstrakcyjny w tym sensie, że sposób realizacji jego zachowania jest ukryty przed resztą systemu (który widzi tylko interfejs obiektu).

  • Metodyka programowania obiektowego

    48

    Abstrakcja

    komunikator.wyslij( tekst );

    Abstrakcja wiąże się zdziedziczeniempolimorfizmem

  • Metodyka programowania obiektowego

    49

    Abstrakcja public class StringStack { public StringStack( int size ) { s= new String [ size ]; n= 0; } public void put( String o ) { if( n < s.length ) s[n++]= o; // else ??? } public String get( ) { if( n > 0 ) return s[--n]; else return ""; // ??? } private String [] s; private int n;}

    import java.util.*;public class StringStack { public StringStack( int size ) {

    s = new ArrayList; } public void put( String o ) { s.add( o ); } public String get( ) { if( s.size() > 0 ) return s.remove( s.size() - 1 ); else return ""; // ??? } private ArrayList s;}

  • Metodyka programowania obiektowego

    50

    Abstrakcja, c.d.public abstract class StringStack { public abstract void put( String o ); public abstract String get( );} import java.util.*;

    public class ListStringStack extends StringStack //implements StringStack{ public void put( String o ) { s.add( o ); } public String get( ) { if( s.size() > 0 ) return s.remove( s.size() - 1 ); else return ""; // ??? } private LinkedList s= new

    LinkedList();}

    public interface StringStack { public void put( String o ); public String get( );}

  • Metodyka programowania obiektowego

    51

    Abstrakcja

    komunikator.wyslij( tekst );

    notes.zapiszAdres( koleg );

  • Metodyka programowania obiektowego

    52

    Abstrakcja, c.d.class MyStrStack

    implements StringStack, Comparable {

    private String [] s;private int p;MyStrStack( int size ) {

    s = new String[size];p= 0;

    } // implementacja StringStack

    // implementacja Comparable}

  • Metodyka programowania obiektowego

    53

    Abstrakcja, c.d.class MyStrStack

    implements StringStack, Comparable {

    // implementacja StringStackpublic void put( String o ) {

    if( p == s.length ) {String [] n = new String[2*p];for( int i= 0; i < p; i++ )

    n[i]= s[i];s= n;

    }s[p++] = o;

    } ..... }

  • Metodyka programowania obiektowego

    54

    Abstrakcja, c.d.

    class MyStrStack implements StringStack,

    Comparable { // implementacja StringStack

    ..... public String get() { if( p > 0 ) return s[--p]; else return null; } ..... }

  • Metodyka programowania obiektowego

    55

    Abstrakcja, c.d.

    class MyStrStack implements StringStack,

    Comparable { // implementacja Comparable

    ..... public int compareTo( MyStrStack o ) {

    return this.p - o.p; } ..... }

  • Metodyka programowania obiektowego

    56

    Abstrakcja, c.d.public interface Sequence { void rewind(); public bool hasNext(); public Object next();}

    import java.util.*;class StringList implements Sequence { ... public void rewind() { idx= 0; } public boolean hasNext() { return idx < l.size(); } public Object next() { Object o= l.get( idx ); idx++; return o; } ...}

  • Metodyka programowania obiektowego

    57

    Korzyści z abstrakcji

    zwiększa bezpieczeństwo kodu poprawia podatność kodu na zmiany ułatwia powtórne wykorzystanie kodu ułatwia programowanie w zespole

  • Metodyka programowania obiektowego

    58

    Enkapsulacja

    Obiekty są hermetyczne:tworząc klasę programista w zasadzie

    ukrywa co najmniej jej stan przed kodem nie należącym do klasy.

    Klasy są hermetyczne:enkapsulacja rozumiana szerzej polega na

    ukrywaniu wszystkich decyzji projektowych nieistotnych dla użytkownika obiektu.

  • Metodyka programowania obiektowego

    59

    Enkapsulacja stanupublic class Contact { private String name; private String contact; private Char icon; public Contact( String name, String contact, char icon ) { this.name= name; this.contact= contact; this.icon= icon; } public String getName() { return name; } public void setName( String name ) { this.name= name; } .....

    enkapsulacja

  • Metodyka programowania obiektowego

    60

    EnkapsulacjaEnkapsulacja

    stanu

    Enkapsulacjatypów

    Enkapsulacjaobiektów

    Ukrywanieimplementacji

  • Metodyka programowania obiektowego

    61

    Narzędzia enkapsulacji w Javie

    ● Ograniczenie widoczności● private,package,protected,public

    ● Zasięg zmiennych● ograniczony do co najwyżej klas

    ● Restrykcyjna obiektowość● wszystko jest obiektem

    ● Interfejsy● znamy tylko deklaracje

  • Metodyka programowania obiektowego

    62

    Korzyści z enkapsulacji

    zwiększa bezpieczeństwo kodu poprawia podatność kodu na zmiany ułatwia powtórne wykorzystanie kodu ułatwia programowanie w zespole

  • Metodyka programowania obiektowego

    63

    Dziedziczenie

    Klasy (typy obiektów) mogą tworzyć hierarchie.

    Hierarchie mogą być wykorzystywane do: eliminowania wspólnego (powtarzającego się) kodu, efektywnego rozszerzania funkcjonalności kodu.

    Hierarchia jest naturalną relacjąwystępującą w realnym świecie.

  • Metodyka programowania obiektowego

    64

    Dziedziczenie

    Uniknięcie powtarzania koduŁatwość dostosowywania istniejącego kodu do potrzeb

  • Metodyka programowania obiektowego

    65

    Dziedziczenie

  • Metodyka programowania obiektowego

    66

    Java:

    ● Wszystkie klasy mają wspólną nadklasę, która nazywa się Object● dostarcza pewnej podstawowej funkcjonalności● umożliwia tworzenie kodu obsługującego

    wszystkie rodzaje obiektów● Możliwe jest tylko jednokrotne dziedziczenie● W przypadku, kiedy obiekt ma dziedziczyć

    kilka funkcjonalności, musimy posłużyć się interfejsami

  • Metodyka programowania obiektowego

    67

    Polimorfizm

    Dowolny obiekt z pewnej hierarchii może być traktowany jak inny obiekt stojący wyżej w tej samej hierarchii.

    Polimorfizm pozwala traktować obiekty podobne w jednolity sposób: zmniejszenie i ujednolicenie kodu.

    Polimorfizm ułatwia rozszerzanie kodu: dodanie nowego rodzaju obiektu w hierarchii nie musi powodować zmian w oprogramowaniu korzystającym z obiektów zdefiniowanych wcześniej.

  • Metodyka programowania obiektowego

    68

    Polimorfizmpublic static void printSequence( Sequence s ) { s.rewind(); while( s.hasNext() ) System.out.println( s.next() );}

  • Metodyka programowania obiektowego

    69

    Polimorfizm w Javie:

    ● domyślne późne wiązanie metod: decyzja, która metoda zostanie uruchomiona, jest podejmowana dopiero w czasie wykonywania programu● spowalnia wykonanie● można wyłączyć, deklarując metodę jako final

    ● polimorfizm dotyczy oczywiście zarówno hierarchii klas, jak i hierarchii interfejsów

  • Metodyka programowania obiektowego

    70

    Polimorfizm w Javie:

    ● ścisła typizacja pomimo późnego wiązania● typy parametryczne (generics)● restrykcyjne rzutowanie● nacisk na wykorzystanie interfejsów

    ● wspólny korzeń hierarchii klas ● jednokrotne dziedziczenie

  • Metodyka programowania obiektowego

    71

    Tworzenie programu● zaczynamy od projektu

    ● analiza: przypadki użycia, modelowanie dziedziny,karty CRC,

    ● model: diagramy klas (specyfikacyjne, implementacyjne), itd.

    ● standaryzujemy powiązania między klasami● wykorzystanie wzorców

    ● kodujemy pojedyncze klasy● klasa ma być autonomiczna

    ● możliwie wcześnie testujemy● pojedyncze klasy● zespoły klas

  • Metodyka programowania obiektowego

    72

    Projektowanie klas (1)

  • Metodyka programowania obiektowego

    73

    Projektowanie klas (2)

  • Metodyka programowania obiektowego

    74

    Projektowanie klas (3)

  • Metodyka programowania obiektowego

    75

    Projektowanie klas (4)

  • Metodyka programowania obiektowego

    76

    Generowanie kodu (1)

  • Metodyka programowania obiektowego

    77

    Generowanie kodu (2)

  • Metodyka programowania obiektowego

    78

    Generowanie kodu (3)

  • Metodyka programowania obiektowego

    79

    Generowanie kodu (4)

  • Metodyka programowania obiektowego

    80

    Generowanie kodu (5)

  • Metodyka programowania obiektowego

    81

    Generowanie kodu (6)package Data Model;import java.util.*;/** * @created 21-lut-2008 10:10:31 * @version 1.0 */public class Contact implements Comparable { private String name; private String contact; private char icon; public Contact(){ } public void finalize() throws Throwable { }...

  • Metodyka programowania obiektowego

    82

    Generowanie kodu (7) ... /** * @param name * @param contact * @param icon * */ public Contact(String name, String contact, char icon){ } public String getName(){ return ""; } /** * @param name * */ public void setName(String name){ }...

  • Metodyka programowania obiektowego

    83

    Edycja kodu package phonebook;import java.util.*;/** * @version 1.0 * @created 21-lut-2008 10:10:31 */public class Contact implements Comparable { private String name; private String contact; private char icon; /** * @param name - name of the contact * @param contact - tel. no., email or something alike * @param icon - icon to mark contact type, importance, etc. */ public Contact(String name, String contact, char icon ) { this.name= name; this.contact= contact; this.icon= icon; } public String getName(){ return name; }...

  • Metodyka programowania obiektowego

    84

    Edycja kodu - IDE

  • Metodyka programowania obiektowego

    85

    Ćwiczenie 2

    ● Proszę napisać program testowy używający stosu napisów (interface StringStack)

    ● Przetestować ten program z wykorzystaniem dwóch przykładowych implementacji

    ● Pliki do pobrania:● http://www.iem.pw.edu.pl/~jstar/studium/StringStack1.java● http://www.iem.pw.edu.pl/~jstar/studium/StringStack2.java

    http://www.iem.pw.edu.pl/~jstar/studium/StringStack1.java

    Slajd 1Slajd 2Slajd 3Slajd 4Slajd 5Slajd 6Slajd 7Slajd 8Slajd 9Slajd 10Slajd 11Slajd 12Slajd 13Slajd 14Slajd 15Slajd 16Slajd 17Slajd 18Slajd 19Slajd 20Slajd 21Slajd 22Slajd 23Slajd 24Slajd 25Slajd 26Slajd 27Slajd 28Slajd 29Slajd 30Slajd 31Slajd 32Slajd 33Slajd 34Slajd 35Slajd 36Slajd 37Slajd 38Slajd 39Slajd 40Slajd 41Slajd 42Slajd 43Slajd 44Slajd 45Slajd 46Slajd 47Slajd 48Slajd 49Slajd 50Slajd 51Slajd 52Slajd 53Slajd 54Slajd 55Slajd 56Slajd 57Slajd 58Slajd 59Slajd 60Slajd 61Slajd 62Slajd 63Slajd 64Slajd 65Slajd 66Slajd 67Slajd 68Slajd 69Slajd 70Slajd 71slide 2Slajd 73Slajd 74Slajd 75slide 6Slajd 77Slajd 78Slajd 79Slajd 80Slajd 81Slajd 82Slajd 83Slajd 84Slajd 85