operatory cz1

background image

Przeci ˛

a˙zanie operatorów (odsłona pierwsza)

Bogdan Kreczmer

ZPCiR IIAiR PWr

pokój 307 budynek C3

bogdan.kreczmer@pwr.wroc.pl

Copyright c

2005–2008 Bogdan Kreczmer

Niniejszy dokument zawiera materiały do wykładu na temat programowania obiektowego. Jest on udost ˛epiony pod warun-

kiem wykorzystania wył ˛

acznie do własnych prywatnych potrzeb i mo˙ze on by´c kopiowany wył ˛

acznie w cało´sci, razem z niniejsz ˛

a

stron ˛

a tytułow ˛

a.

background image

Przeci ˛

a˙zanie operatorów

enum Element { e, a, b };

Element TabliczkaDzialania[3][3] = { { b, e, a }, { e, a, b }, { a, b, e } };

Element dodaj( Element x, Element y )

{

return TabliczkaDzialania[x][y];

}

int main( )
{

Element

x = b, y = e, z;

z = dodaj(x,y);

}

Tabliczka działania

a

b

e

a

b

e

a

b

e

a

b

e

a

b

e

W oparciu o zadan ˛

a tabliczk˛e działania mo˙zemy definiowa´c wybran ˛

a operacj ˛e dla zadanego zbioru

elementów.

Copyright c

2005–2008 Bogdan Kreczmer

Przeci ˛

a˙zanie operatorów (odsłona pierwsza)

1

background image

Przeci ˛

a˙zanie operatorów

Element TabliczkaDzialania[3][3] = { { b, e, a }, { e, a, b }, { a, b, e } };

Element operator + ( Element x, Element y )

{

return TabliczkaDzialania[x][y];

}

int main( )
{

Element

x = b, y = e, z;

z = x + y;

}

Tabliczka działania

a

b

e

a

b

e

a

b

e

a

b

e

a

b

e

Działanie to mo˙zna wprost zaimplementowa´c definiuj ˛

ac przeci ˛

a˙zenie operatora ’+’. Dzi ˛eki temu

otrzymujemy naturalny zapis działania stosuj ˛

ac zwykł ˛

a notacj ˛e dodawania.

Copyright c

2005–2008 Bogdan Kreczmer

Przeci ˛

a˙zanie operatorów (odsłona pierwsza)

2

background image

Przeci ˛

a˙zanie operatorów

Element TabliczkaDzialania[3][3] = { { b, e, a }, { e, a, b }, { a, b, e } };

Element operator + ( Element x, Element y )

{

return TabliczkaDzialania[x][y];

}

int main( )
{

Element

x = b, y = e, z;

z = x + y;
z = operator+ (x, y);

}

Przeci ˛

a˙zenie operatora dodawania mo˙zemy równie˙z wywoła´c wprost jako funkcj ˛e.

Copyright c

2005–2008 Bogdan Kreczmer

Przeci ˛

a˙zanie operatorów (odsłona pierwsza)

3

background image

Przeci ˛

a˙zanie operatorów

Element TabliczkaDzialania[3][3] = { { b, e, a }, { e, a, b }, { a, b, e } };

Element dodaj( Element x, Element y )

{ return TabliczkaDzialania[x][y];

Element operator + ( Element x, Element y )

{ return TabliczkaDzialania[x][y]; }

int main( )
{

Element

x = b, y = e, z;

z = x + y;

z = operator+ (x, y);
z = dodaj(x, y);

}

Mechanizmy definiowania przeci ˛

a˙ze ´n operatorów oraz ich jawne wywoływanie mo˙zna uto˙zsamia´c z

mechanizmami definiowania i wywoływania zwykłych funkcji.

Copyright c

2005–2008 Bogdan Kreczmer

Przeci ˛

a˙zanie operatorów (odsłona pierwsza)

4

background image

Przeci ˛

a˙zanie operatorów

. . .

int main( )
{

Element

x = b, y = e, z;

z = x + (y + x);

z = operator+ (x, operator+ (y, x) );

z = dodaj(x, dodaj(y, x) );

}

Mo˙zliwo´s´c jawnego wywoływania przeci ˛

a˙ze ´n pozwala na zobrazowanie składania i kolejno´sci ich

wywoła ´n w operacjach zło˙zonych z uwzgl ˛ednieniem nawiasów i priorytetów poszczególnych opera-

torów.

Copyright c

2005–2008 Bogdan Kreczmer

Przeci ˛

a˙zanie operatorów (odsłona pierwsza)

5

background image

Pytania i ´cwiczenia

1. Bior ˛

ac pod uwag ˛e wcze´sniej zdefiniowany typ Element nale˙zy okre´sli´c czy poni˙zej

wykonana operacja jest poprawna (bez implementacji przeci ˛

a˙zenia operatora ’+’)?

Element x = e, y = a, z;
z = (Element)(x + y);

Je˙zeli tak, to jaki jest wynik tej operacji? Czy mo˙zna j ˛

a zapisa´c bez konieczno´sci rzuto-

wania na typ Element? Co jest typem warto´sci sumy w wyra˙zeniu powy˙zej?

2. Je˙zeli zapis wyra˙zenia powy˙zej jest poprawny (bez przeci ˛

a˙zania operatora ’+’), to jaki

b ˛edzie jego wynik gdy

x = b

? Je˙zeli nie, to co nale˙zy uczyni´c aby zapis ten był po-

prawny?

3. Zakładaj ˛

ac, ˙ze operator ’+’ nie jest przeci ˛

a˙zony, to czy zapis poni˙zszego wyra˙zenia

logicznego jest poprawny?

Element x = a, y = b;

x + y == (int)x + (int)y;

Je˙zeli tak, to jaki b ˛edzie ono miało wynik? Je˙zeli nie, to co nale˙zy uczyni´c, aby było ono
poprawne.

Copyright c

2005–2008 Bogdan Kreczmer

Przeci ˛

a˙zanie operatorów (odsłona pierwsza)

6

background image

Pytania i ´cwiczenia

4. Bior ˛

ac pod uwag ˛e wcze´sniej zdefiniowan ˛

a tabliczk˛e? działa ´n na str. 1 oraz zdefinio-

wane przeci ˛

a˙zenie operatora ’+’ dla typu Element nale˙zy okre´sli´c, czy wyra˙zenie lo-

giczne w pytaniu nr 3 b ˛edzie poprawne? Je´sli tak, to jaki b ˛edzie jego wynik? Je´sli nie,
to co nale˙zy uczyni´c, aby było ono poprawne?

Copyright c

2005–2008 Bogdan Kreczmer

Przeci ˛

a˙zanie operatorów (odsłona pierwsza)

7


Wyszukiwarka

Podobne podstrony:
wyklad4a Przeciążanie operatorów cz1
RI cz1
The uA741 Operational Amplifier[1]
psychopatologia poznawcza cz1
010 Promocja cz1
rach zarz cz1
operatory i funkcje matematyczne
DIELEKTRYKI cz1 AIR
operator maszyn lesnych 833[02] o1 03 n
mechanik operator pojazdow i maszyn rolniczych 723[03] z2 04 n
Kierowca operator wózków jezdniowych 833401
mechanik operator pojazdow i maszyn rolniczych 723[03] o1 05 u
OPERAT STABLE VERSION ugoda id Nieznany

więcej podobnych podstron