metodyka programowania obiektowegoprpw.iem.pw.edu.pl/wyniki.21-3/mpo/mpo1.pdfmetodyka programowania...
TRANSCRIPT
-
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