Metody programowania, Wykład XVIII – Operatory
jednoargumentowe, 06.03.2007
Strona
1
OPERATORY KLASY
OPERATORY KLASY
Definicja operatora dla klasy polega na zdefiniowaniu
wewnątrz klasy odpowiedniej metody zwanej metodą
operatorową; w ogólności metody operatorowe pozwalają
na stosowanie obiektów jako argumentów różnych
operatorów
Definicja operatora dla klasy polega na zdefiniowaniu
wewnątrz klasy odpowiedniej metody zwanej metodą
operatorową; w ogólności metody operatorowe pozwalają
na stosowanie obiektów jako argumentów różnych
operatorów
@Obiekt
@Obiekt
Obiekt1 @ Obiekt2
Obiekt1 @ Obiekt2
@ - dowolny operator
jednoargumentowy
@ - dowolny operator
jednoargumentowy
@ - dowolny operator
dwuargumentowy
@ - dowolny operator
dwuargumentowy
Strona
2
OPERATORY JEDNOARGUMENTOWE
OPERATORY JEDNOARGUMENTOWE
Definicja operatora jednoargumentowego @ dla
klasy polega na zdefiniowaniu w klasie bezparametrowej
metody operatorowej o nazwie operator@
Definicja operatora jednoargumentowego @ dla
klasy polega na zdefiniowaniu w klasie bezparametrowej
metody operatorowej o nazwie operator@
typ Klasa::operator@()
{
ciało_metody
}
typ Klasa::operator@()
{
ciało_metody
}
@ - dowolny
operator
jednoargumentow
y
@ - dowolny
operator
jednoargumentow
y
Obiekt.operator@()
Obiekt.operator@()
@Obiekt
@Obiekt
Metody programowania, Wykład XVIII – Operatory
jednoargumentowe, 06.03.2007
Strona
3
char *p;
int size = 1;
Obiekt
KLASA CharInt – METODA InvertSign()
KLASA CharInt – METODA InvertSign()
Zadaniem metody jest zmiana znaku liczby na znak
przeciwny
Zadaniem metody jest zmiana znaku liczby na znak
przeciwny
‘0’| 0
liczba 0 nie posiada znaku >> brak
akcji
liczba 0 nie posiada znaku >> brak
akcji
Metody programowania, Wykład XVIII – Operatory
jednoargumentowe, 06.03.2007
Strona
4
KLASA CharInt – METODA InvertSign() –
c.d.
KLASA CharInt – METODA InvertSign() –
c.d.
Konwersja z + na – polegać będzie na dopisaniu
znaku -
Konwersja z + na – polegać będzie na dopisaniu
znaku -
| | | |
‘2’ ‘2’ ‘0’ 0
‘-’
char *p;
int size = 3;
Obiekt
‘2’|‘2’|‘0’| 0
standardowa funkcja
strcpy
| | | |
‘2’ ‘2’ ‘0’ 0
‘-’
metoda
Set
size = 4;
Metody programowania, Wykład XVIII – Operatory
jednoargumentowe, 06.03.2007
char *p;
int size = 4;
Obiekt
Strona
5
KLASA CharInt – METODA InvertSign() –
c.d.
KLASA CharInt – METODA InvertSign() –
c.d.
Konwersja z - na + polegać będzie na usunięciu
znaku -
Konwersja z - na + polegać będzie na usunięciu
znaku -
| | |
‘2’ ‘2’ ‘0’ 0
‘-’|‘2’|‘2’|‘0’| 0
standardowa funkcja
strcpy
| | |
‘2’ ‘2’ ‘0’ 0
metoda
Set
size = 3;
Metody programowania, Wykład XVIII – Operatory
jednoargumentowe, 06.03.2007
Strona
6
KLASA CharInt – OPERATORY PRZEDROSTKOWE ++ i
--
KLASA CharInt – OPERATORY PRZEDROSTKOWE ++ i
--
Zadaniem obu operatorów jest odpowiednio zwiększanie i
zmniejszanie o 1 liczby całkowitej zapisanej w obiekcie typu
CharInt
Zadaniem obu operatorów jest odpowiednio zwiększanie i
zmniejszanie o 1 liczby całkowitej zapisanej w obiekcie typu
CharInt
operator++()
operator++()
operator--()
operator--()
liczba >=
0
liczba >=
0
kod realizujący
powiększenie o
1
kod realizujący
powiększenie o
1
liczba < 0
liczba < 0
liczba <=
0
liczba <=
0
liczba > 0
liczba > 0
odwrócenie znaku
metodą
InvertSign
odwrócenie znaku
metodą
InvertSign
kod realizujący
pomniejszenie o 1
kod realizujący
pomniejszenie o 1
Metody programowania, Wykład XVIII – Operatory
jednoargumentowe, 06.03.2007
Strona
7
KLASA CharInt – OPERATORY PRZEDROSTKOWE ++ i -- -
c.d.
KLASA CharInt – OPERATORY PRZEDROSTKOWE ++ i -- -
c.d.
Realizacja kodu powiększania o 1
Realizacja kodu powiększania o 1
idź do ostatniej cyfry
cyfra=‘0’,
idź do następnej cyfry
cyfra++
cyfra==‘9’
dodaj cyfrę ‘1’ z
lewej strony liczby
czy jesteś
na cyfrze?
T
N
T
N
Metody programowania, Wykład XVIII – Operatory
jednoargumentowe, 06.03.2007
Strona
8
KLASA CharInt – OPERATORY PRZEDROSTKOWE ++ i -- -
c.d.
KLASA CharInt – OPERATORY PRZEDROSTKOWE ++ i -- -
c.d.
Realizacja kodu pomniejszania o 1
Realizacja kodu pomniejszania o 1
idź do ostatniej cyfry
cyfra=‘9’,
idź do następnej cyfry
cyfra--
cyfra==‘0’
czy jesteś
na cyfrze?
T
N
T
N
pierwsza_cyfra==‘0’
i czy wielkość
liczby >1
usuń początkowe 0
T
Metody programowania, Wykład XVIII – Operatory
jednoargumentowe, 06.03.2007
Strona
9
OPERATORY JEDNOARGUMENTOWE SPECJALNE
OPERATORY JEDNOARGUMENTOWE SPECJALNE
Operatory ++ i -- w wersji przyrostkowej dla
odróżnienia
od
odpowiadających
im
operatorów
przedrostkowych realizowane są poprzez metody
operatorowe operator++ i operator– z dodatkowym
parametrem typu int
Operatory ++ i -- w wersji przyrostkowej dla
odróżnienia
od
odpowiadających
im
operatorów
przedrostkowych realizowane są poprzez metody
operatorowe operator++ i operator– z dodatkowym
parametrem typu int
Obiekt++
Obiekt++
Obiekt--
Obiekt--
Obiekt.operator++(0)
Obiekt.operator++(0)
Obiekt.operator--(0)
Obiekt.operator--(0)
Metody programowania, Wykład XVIII – Operatory
jednoargumentowe, 06.03.2007