lezione 06 - ereditarietà · cc by diapositiva 3 alessandro ursomando ereditarietÀ oop...
TRANSCRIPT
OOP
Ereditarietà
CC BY
ALESSANDRO URSOMANDODIAPOSITIVA 2
LE TRE CARATTERISTICHEFONDAMENTALI DELLA OOP
� OOP
���������������� ���������������� �����������
������������������������������� ������ �� ���� �
���� ��� �������������������������
CC BY
ALESSANDRO URSOMANDODIAPOSITIVA 3
EREDITARIETÀ
� OOP � EREDITARIET��
���������������������� �������������Punto
- int x
- int y
+ Punto()
+ Punto(int x, int y)
+ int getAscissa()
+ int getOrdinata()
+ void setAscissa(int x)
+ void setOrdinata(int y)
+ String toString()
Punto3d
- int x
- int y
- int z
+ Punto3d()
+ Punto3d(int x, int y, int z)
+ int getAscissa()
+ int getOrdinata()
+ int getQuota()
+ void setAscissa(int x)
+ void setOrdinata(int y)
+ void setQuota(int z)
+ String toString()
�������������������������� �������������
�� ���� ����!�������������������������� �����������������������
��� ���������������� �"� �������������""���������������������� �������������������
��� ���������������������� ��������������� #�� �����������$
��������� ��������� ������ �� ������ #�� ����������� $
CC BY
ALESSANDRO URSOMANDODIAPOSITIVA 4
QUALCOSA DA EREDITARE
� OOP � EREDITARIET������
Punto
- int x
- int y
+ Punto()
+ Punto(int x, int y)
+ int getAscissa()
+ int getOrdinata()
+ void setAscissa(int x)
+ void setOrdinata(int y)
+ String toString()
Punto3d
- int x �
- int y �
- int z
+ Punto3d()
+ Punto3d(int x, int y, int z)
+ int getAscissa() �
+ int getOrdinata() �
+ int getQuota()
+ void setAscissa(int x) �
+ void setOrdinata(int y) �
+ void setQuota(int z)
+ String toString()
�������� �������������������������������������������������#�����������$����������� ������
Punto3d
- int x
- int y
- int z
+ Punto3d()
+ Punto3d(int x, int y, int z)
+ int getAscissa()
+ int getOrdinata()
+ int getQuota()
+ void setAscissa(int x)
+ void setOrdinata(int y)
+ void setQuota(int z)
+ String toString()
CC BY
ALESSANDRO URSOMANDODIAPOSITIVA 5
QUALCOSA DA AGGIUNGERE
� OOP � EREDITARIET�
Punto
- int x
- int y
+ Punto()
+ Punto(int x, int y)
+ int getAscissa()
+ int getOrdinata()
+ void setAscissa(int x)
+ void setOrdinata(int y)
+ String toString()
Punto3d
- int x
- int y
- int z �
+ Punto3d()
+ Punto3d(int x, int y, int z)
+ int getAscissa()
+ int getOrdinata()
+ int getQuota() �
+ void setAscissa(int x)
+ void setOrdinata(int y)
+ void setQuota(int z) �
+ String toString()
�������� �������������������������������������������������#�����������$����������� ������
�������� �������������#����� �������$��������� ������ ���
�����������������%�������
Punto3d
- int x
- int y
- int z
+ Punto3d()
+ Punto3d(int x, int y, int z)
+ int getAscissa()
+ int getOrdinata()
+ int getQuota()
+ void setAscissa(int x)
+ void setOrdinata(int y)
+ void setQuota(int z)
+ String toString()
CC BY
ALESSANDRO URSOMANDODIAPOSITIVA 6
QUALCOSA DA RIDEFINIRE
� OOP � EREDITARIET�
Punto
- int x
- int y
+ Punto()
+ Punto(int x, int y)
+ int getAscissa()
+ int getOrdinata()
+ void setAscissa(int x)
+ void setOrdinata(int y)
+ String toString()
Punto3d
- int x
- int y
- int z
+ Punto3d()
+ Punto3d(int x, int y, int z)
+ int getAscissa()
+ int getOrdinata()
+ int getQuota()
+ void setAscissa(int x)
+ void setOrdinata(int y)
+ void setQuota(int z)
+ String toString() �
�������� ������������������������������������������������#�����������$����������� ������
�������� �������������#����� �������$��������� ������ ���
�����������������%�������
�������� �����������������#����� �������$����������������%����������
���������� ������ ��������������&�'����������(
Punto3d
- int x
- int y
- int z
+ Punto3d()
+ Punto3d(int x, int y, int z)
+ int getAscissa()
+ int getOrdinata()
+ int getQuota()
+ void setAscissa(int x)
+ void setOrdinata(int y)
+ void setQuota(int z)
+ String toString()
CC BY
ALESSANDRO URSOMANDODIAPOSITIVA 7
RAPPRESENTAZIONE UML
� OOP � EREDITARIET�
Punto
- int x
- int y
+ Punto()
+ Punto(int x, int y)
+ int getAscissa()
+ int getOrdinata()
+ void setAscissa(int x)
+ void setOrdinata(int y)
+ String toString()
Punto3d
- int x
- int y
- int z
+ Punto3d()
+ Punto3d(int x, int y, int z)
+ int getAscissa()
+ int getOrdinata()
+ int getQuota()
+ void setAscissa(int x)
+ void setOrdinata(int y)
+ void setQuota(int z)
+ String toString()
Punto
- int x
- int y
+ Punto()
+ Punto(int x, int y)
+ int getAscissa()
+ int getOrdinata()
+ void setAscissa(int x)
+ void setOrdinata(int y)
+ String toString()
Punto3d
- int z
+ Punto3d()
+ Punto3d(int x, int y, int z)
+ int getQuota()
+ void setQuota(int z)
+ String toString()
CC BY
ALESSANDRO URSOMANDODIAPOSITIVA 8
CODIFICA JAVA
� OOP � EREDITARIET�
������ ����� ��� �
�
Punto
- int x
- int y
+ Punto()
+ Punto(int x, int y)
+ int getAscissa()
+ int getOrdinata()
+ void setAscissa(int x)
+ void setOrdinata(int y)
+ String toString()
Punto3d
- int z
+ Punto3d()
+ Punto3d(int x, int y, int z)
+ int getQuota()
+ void setQuota(int z)
+ String toString()
CC BY
ALESSANDRO URSOMANDODIAPOSITIVA 9
������ ����� ��� �
�
CODIFICA JAVA
� OOP � EREDITARIET�
������ ����� ��� �������� �� �� ��
�
Punto
- int x
- int y
+ Punto()
+ Punto(int x, int y)
+ int getAscissa()
+ int getOrdinata()
+ void setAscissa(int x)
+ void setOrdinata(int y)
+ String toString()
Punto3d
- int z
+ Punto3d()
+ Punto3d(int x, int y, int z)
+ int getQuota()
+ void setQuota(int z)
+ String toString()
CC BY
ALESSANDRO URSOMANDODIAPOSITIVA 10
������ ����� ��� �������� �� �� ��
�
CODIFICA JAVA
� OOP � EREDITARIET�
Punto
- int x
- int y
+ Punto()
+ Punto(int x, int y)
+ int getAscissa()
+ int getOrdinata()
+ void setAscissa(int x)
+ void setOrdinata(int y)
+ String toString()
Punto3d
- int z
+ Punto3d()
+ Punto3d(int x, int y, int z)
+ int getQuota()
+ void setQuota(int z)
+ String toString()
������ ����� ��� �������� �� �� �������� ����� � ���������� ������� ������ �� �� �� �
����������������������������
�
�
CC BY
ALESSANDRO URSOMANDODIAPOSITIVA 11
������ ����� ��� �������� �� �� �������� ����� � ���������� ������� ������ �� �� �� �
����������������������������
�
�
CODIFICA JAVA
� OOP � EREDITARIET�
Punto
- int x
- int y
+ Punto()
+ Punto(int x, int y)
+ int getAscissa()
+ int getOrdinata()
+ void setAscissa(int x)
+ void setOrdinata(int y)
+ String toString()
Punto3d
- int z
+ Punto3d()
+ Punto3d(int x, int y, int z)
+ int getQuota()
+ void setQuota(int z)
+ String toString()
������ ����� ��� �������� �� �� �������� ����� � ���������� ������� ������ �� �� �� �
����������������������������
������� �� ������������ � ����� �� ������� �� ������������ � ����� �� ������� ���� ������������� �� � ������ �� ������� ���� ������������� �� � ������ �� �
�
CC BY
ALESSANDRO URSOMANDODIAPOSITIVA 12
������ ����� ��� �������� �� �� �������� ����� � ���������� ������� ������ �� �� �� �
����������������������������
������� �� ������������ � ����� �� ������� �� ������������ � ����� �� ������� ���� ������������� �� � ������ �� ������� ���� ������������� �� � ������ �� �
�
CODIFICA JAVA
� OOP � EREDITARIET�
Punto
- int x
- int y
+ Punto()
+ Punto(int x, int y)
+ int getAscissa()
+ int getOrdinata()
+ void setAscissa(int x)
+ void setOrdinata(int y)
+ String toString()
Punto3d
- int z
+ Punto3d()
+ Punto3d(int x, int y, int z)
+ int getQuota()
+ void setQuota(int z)
+ String toString()
������ ����� ��� �������� �� �� �������� ����� � ���������� ������� ������ �� �� �� �
����������������������������
������� �� ������������ � ����� �� ������� �� ������������ � ����� �� ������� ���� ������������� �� � ������ �� ������� ���� ������������� �� � ������ �� ������� !���� ��!������ �
����� "�" # � # "�" # � # "�"��
�
������������������������������� ����� �������������������)�
���!������ �������������������"���������!�����������������������������
����������������� �*��������������� ���� ������������������ �"� ����� �������
CC BY
ALESSANDRO URSOMANDODIAPOSITIVA 13
������ ����� ��� �������� �� �� �������� ����� � ���������� ������� ������ �� �� �� �
����������������������������
������� �� ������������ � ����� �� ������� �� ������������ � ����� �� ������� ���� ������������� �� � ������ �� ������� ���� ������������� �� � ������ �� ������� !���� ��!������ �
����� "�" # � # "�" # � # "�"��
�
CODIFICA JAVA
� OOP � EREDITARIET�
Punto
- int x
- int y
+ Punto()
+ Punto(int x, int y)
+ int getAscissa()
+ int getOrdinata()
+ void setAscissa(int x)
+ void setOrdinata(int y)
+ String toString()
Punto3d
- int z
+ Punto3d()
+ Punto3d(int x, int y, int z)
+ int getQuota()
+ void setQuota(int z)
+ String toString()
������ ����� ���$� ������ ��� �
�
+���������� ��� �������������� �����������!���������������
������ �,� �����������������
CC BY
ALESSANDRO URSOMANDODIAPOSITIVA 14
������ ����� ��� �������� �� �� �������� ����� � ���������� ������� ������ �� �� �� �
����������������������������
������� �� ������������ � ����� �� ������� �� ������������ � ����� �� ������� ���� ������������� �� � ������ �� ������� ���� ������������� �� � ������ �� ������� !���� ��!������ �
����� "�" # � # "�" # � # "�"��
�
CODIFICA JAVA
� OOP � EREDITARIET�
������ ����� ���$� ������ ��� �
�
������ ����� ���$� ������ ��� �������� �� %�
�
+���������� ��� �������������� �����������!���������������
������ �,� �����������������
CC BY
ALESSANDRO URSOMANDODIAPOSITIVA 15
������ ����� ���$� ������ ��� �������� �� %�
�
������ ����� ���$� ������ ��� �������� �� %������� ���$��� ��������������
�
������ ����� ��� �������� �� �� �������� ����� � ���������� ������� ������ �� �� �� �
����������������������������
������� �� ������������ � ����� �� ������� �� ������������ � ����� �� ������� ���� ������������� �� � ������ �� ������� ���� ������������� �� � ������ �� ������� !���� ��!������ �
����� "�" # � # "�" # � # "�"��
�
CODIFICA JAVA
� OOP � EREDITARIET�
+���������� ��� �������������� �����������!���������������
������ �,� �����������������
CC BY
ALESSANDRO URSOMANDODIAPOSITIVA 16
������ ����� ���$� ������ ��� �������� �� %������� ���$��� ��������������
�
������ ����� ��� �������� �� �� �������� ����� � ���������� ������� ������ �� �� �� �
����������������������������
������� �� ������������ � ����� �� ������� �� ������������ � ����� �� ������� ���� ������������� �� � ������ �� ������� ���� ������������� �� � ������ �� ������� !���� ��!������ �
����� "�" # � # "�" # � # "�"��
�
CODIFICA JAVA
� OOP � EREDITARIET�
������ ����� ���$� ������ ��� �������� �� %������� ���$��� �������������������� ���$���� �� �� �� �� %� �
��������������&�����%��
�
�
+���������� ��� �������������� �����������!���������������
������ �,� �����������������
�������� ������� ��������������������� ������
������������������� �����������
CC BY
ALESSANDRO URSOMANDODIAPOSITIVA 17
������ ����� ���$� ������ ��� �������� �� %������� ���$��� �������������������� ���$���� �� �� �� �� %� �
��������������&�����%��
�
�
������ ����� ��� �������� �� �� �������� ����� � ���������� ������� ������ �� �� �� �
����������������������������
������� �� ������������ � ����� �� ������� �� ������������ � ����� �� ������� ���� ������������� �� � ������ �� ������� ���� ������������� �� � ������ �� ������� !���� ��!������ �
����� "�" # � # "�" # � # "�"��
�
CODIFICA JAVA
� OOP � EREDITARIET�
������ ����� ���$� ������ ��� �������� �� %������� ���$��� �������������������� ���$���� �� �� �� �� %� �
��������������&�����%��
������� �� ���&������ ������ %�������� ���� ���&������� %� � �����% %� �
��
+���������� ��� �������������� �����������!���������������
������ �,� �����������������
�������� ������� ��������������������� ������
������������������� �����������
CC BY
ALESSANDRO URSOMANDODIAPOSITIVA 18
������ ����� ���$� ������ ��� �������� �� %������� ���$��� �������������������� ���$���� �� �� �� �� %� �
��������������&�����%��
������� �� ���&������ ������ %�������� ���� ���&������� %� � �����% %� �
��
������ ����� ��� �������� �� �� �������� ����� � ���������� ������� ������ �� �� �� �
����������������������������
������� �� ������������ � ����� �� ������� �� ������������ � ����� �� ������� ���� ������������� �� � ������ �� ������� ���� ������������� �� � ������ �� ������� !���� ��!������ �
����� "�" # � # "�" # � # "�"��
�
CODIFICA JAVA
� OOP � EREDITARIET�
������ ����� ���$� ������ ��� �������� �� %������� ���$��� �������������������� ���$���� �� �� �� �� %� �
��������������&�����%��
������� �� ���&������ ������ %�������� ���� ���&������� %� � �����% %� ������� !���� ��!������ �
����� "�" # ������������ # "�" #������������ # "�" # % # "�"�
��
+���������� ��� �������������� �����������!���������������
������ �,� �����������������
�������� ������� ��������������������� ������
������������������� �����������
�������� ������������������������������������������������������
���������������������-������� �*�� ������������������������� ����� ����������������������������� ����)�� ����� �*�
����������������
���� �� ���������������������� ��������� ���������������������������������������������������������
��� �"� ����� �� �������
CC BY
ALESSANDRO URSOMANDODIAPOSITIVA 19
������ ����� ���$� ������ ��� �������� �� %������� ���$��� �������������������� ���$���� �� �� �� �� %� �
��������������&�����%��
������� �� ���&������ ������ %�������� ���� ���&������� %� � �����% %� �
��
������ ����� ��� �������� �� �� �������� ����� � ���������� ������� ������ �� �� �� �
����������������������������
������� �� ������������ � ����� �� ������� �� ������������ � ����� �� ������� ���� ������������� �� � ������ �� ������� ���� ������������� �� � ������ �� ������� !���� ��!������ �
����� "�" # � # "�" # � # "�"��
�
CODIFICA JAVA
� OOP � EREDITARIET�
������ ����� ���$� ������ ��� �������� �� %������� ���$��� �������������������� ���$���� �� �� �� �� %� �
��������������&�����%��
������� �� ���&������ ������ %�������� ���� ���&������� %� � �����% %� ������� !���� ��!������ �
����� "�" # ������������ # "�" #������������ # "�" # % # "�"�
��
.������������� �����#����������$��� ����������������������
���������������������������� ��������� �"� ����� �� ������
����������������������������������� ������������������������������
�������� �������"��������������
������ ����� ��� �������� ��������� �� �� �������� ����� � ���������� ������� ������ �� �� �� �
����������������������������
������� �� ������������ � ����� �� ������� �� ������������ � ����� �� ������� ���� ������������� �� � ������ �� ������� ���� ������������� �� � ������ �� ������� !���� ��!������ �
����� "�" # � # "�" # � # "�"��
�
������ ����� ���$� ������ ��� �������� �� %������� ���$��� �������������������� ���$���� �� �� �� �� %� �
��������������&�����%��
������� �� ���&������ ������ %�������� ���� ���&������� %� � �����% %� ������� !���� ��!������ �
����� "�" # ������������ � # "�" #������������ � # "�" # % # "�"�
��
CC BY
ALESSANDRO URSOMANDODIAPOSITIVA 20
������ ����� ��� ���������� �� �� �������� ����� � ���������� ������� ������ �� �� �� �
����������������������������
������� �� ������������ � ����� �� ������� �� ������������ � ����� �� ������� ���� ������������� �� � ������ �� ������� ���� ������������� �� � ������ �� ������� !���� ��!������ �
����� "�" # � # "�" # � # "�"��
�
������ ����� ���$� ������ ��� �������� �� %������� ���$��� �������������������� ���$���� �� �� �� �� %� �
��������������&�����%��
������� �� ���&������ ������ %�������� ���� ���&������� %� � �����% %� ������� !���� ��!������ �
����� "�" # � # "�" # � # "�" # % # "�"��
�
ISTANZIAZIONE DI SOTTOCLASSI
� OOP � EREDITARIET�
���$� � �' ���$�����������������($���������������)(�������&�����*��!����+��������������
���$� � �' ���$��,�-.�(��!����+��������������
CC BY
ALESSANDRO URSOMANDODIAPOSITIVA 21
PROTECTED IN UML
� OOP � EREDITARIET�
Punto
# int x
# int y
+ Punto()
+ Punto(int x, int y)
+ int getAscissa()
+ int getOrdinata()
+ void setAscissa(int x)
+ void setOrdinata(int y)
+ String toString()
Punto3d
# int z
+ Punto3d()
+ Punto3d(int x, int y, int z)
+ int getQuota()
+ void setQuota(int z)
+ String toString()
��/0���� �������������������������������
������ ��������������������������
CC BY
ALESSANDRO URSOMANDODIAPOSITIVA 22
EREDITARIETÀ
� OOP � EREDITARIET�
1���������-���������������!�������� ����������������!����
�������"���������� ������ ������������������������ ��������&������� �
��� ������"������������������ ����������������� �,� ����������������
���������� ����������� ���!������ ������� �������"���� �� �,� ��������� ���������������������