Informatica – La Programmazione Orientata agli Oggetti
La Programmazione
Orientata agli Oggetti (O.O.P.)
Roberta Gerboni
Informatica – La Programmazione Orientata agli Oggetti
������������ ��� �� ���� ������������ ���
����� ��������� ��� ������� ��� ������ � ����� � ������������������� ����������� ��� ������������� �� ������� �� ��������� ������ � ������� ��� ������� ����� ������� � ��������� ������������� ����������
��� ���� �� ������� �� ������� ����������� �������� ����������� ���������� ����������� �� ���� ������ ����� ������� ��� ���� ������� ��� ���������� ������ ������ � �� ��� ��� ����� ��������� ���� ���� ����� ���� ������� ��
!
����������� ����������"� ���� ���� ����������� # ������� �$���� � ������� �� ��� ����% ��� �
������� � ���!���& � ������� ������ ����������� �� ������������ ��������� ���� �������� �$ ������ � �� �������� ���������� ��� � �����
����� ���� ���� ����� ���� ������� ������� ��� ��������% ��� �
������� �� ����"
'� ���� �� � ������� ��������� �� �������� �� �����#& �������& ���������������� ��� �����'� ���� �� ���� �� ���� �������� ()��*�+� ���� # ������������ �� �� �� ����������������% � ������� �� $�%��� �� ������� �� ���������� ��� ������������ � ������ � ���� �
Informatica – La Programmazione Orientata agli Oggetti
��������������&��������������&
������������������������������������&��������������&
���������&��%�&����������������&��%�&�������
����%���&
����%����
�������
����%����
,
�������������&��
����������������������&��
�����#&
�����������'�������(
Informatica – La Programmazione Orientata agli Oggetti
�������������� ���
-���������� �� ������� ��� ������� ���������� ��� �����������
-���������� �� ������� ��� ������� ���� ����� ����������
-���������� ����������
)���%���&%�&�������������&
�&�%&������������&��&�������&��)�*���&��%��&����%����
.
��������%� $�������%
• � ���� ������� ���� ����������� �������� ����� ������� ��� ���������� � ��� ������� �������� �� �� ������
• �$ ������ �������� � ���������� �� ������� �� ������ ����������
• ��������/ � ���� �� ������
• ������� �� �������� ������� �������� �� ����� �� ���������� ��� �� ��� �������� ���������� �� ������� �� ��������
• 0���� �� �� ������ ��� ������ �� ���� ������� ����� �� ����������� ������� �� ���� ��������� �� ���� # ������� �� ��������������
Informatica – La Programmazione Orientata agli Oggetti
1��������� ������������ ����� 22- # �� �%�����
1� �%���� # � �� � ��������� ��� ������� ����� �������� ��� �� ����������
"� �������� �� ����� ����� ������������ �� ���� ����� ������� ����������������������� ��� ���� ����������� ���������� 3�4 �������� �� ������ ��������� ��������� ��� ������ ��������� � ���� ���������� �� ������� ���������� ��� ���������
1� �%���� # �� ����������� �������� �� � �� � �� ���� ()��* � �������� ��
������� � �%���� �� �������
5
1� �%���� # �� ����������� �������� �� � �� � �� ���� ()��* � �������� ��)����%�� �� ������� ��� ����������� � � ���� ���� �������
+� ������� # �� ������� ��%%� �%����% ���� �� ������� �� �������������������� �� �� ����� ������& �� ���� � ������� �� ���������� �� ��������� ��� ���� ����� ��������� ����������
1� ��������� ��� ������ � ������� # �� ������ ��������� ��� ��# ��� �� � �� ����� �����
Informatica – La Programmazione Orientata agli Oggetti
'��������%6�67���������
������� � �%���� �� �������
8
Informatica – La Programmazione Orientata agli Oggetti
OrcoOrco CavaliereCavaliere
Classi
Istanze (Oggetti)
������� � �%���� �� �������
9
Informatica – La Programmazione Orientata agli Oggetti
2��� ������� # �������� ��%
• ��������� ��� �� ��������� �� �� �������������+� � ��������# ������������ � ������� �� ��� ����� � ���� ��� � ��������� � ���������
• ������ ��� �� ��������� � ������������� ���������%� � �� ������&�� ��������# �������+�& ���# �� ���������/ ������������ ������ � ����� ��������� 4 ����������" ������ ������� �������� ��� �� )������� ���������� �� ��������
������� � �%���� �� �������
�
" ������ ������� �������� ��� �� )������� ���������� �� ����������� �� ��������� �� ����� ������������ � ������ ����� �������� �������� ������ �� ��������
1� ����� �� �� �������& # �:������� ��� ������ ����� �� �� ����/ �� ������������ ������� �� ��� � ($�%��� ������� ��%%� $������%�*� '� ����������� � ���� ������ �� �� �� ����/ �� � �������& �� �� ����� ������/ ������������
��� ����� ����:�����������& � ������� # �������/ �������� �� �����������& �� � ��� ���%���� �& ������& ���� �� ������������
Informatica – La Programmazione Orientata agli Oggetti
��������� ������
������ �� ��� �%����
�������&,
������� � �%���� �� �������
���������������� �� ��� �%����
���� ������ )������� ������
�
Attributo
Attributo
Attributo
�����)�����" ������ �� �� ������������������ �������)���������� ������ (���# ��������� ��� ��������� 4 ����� ������* � �����:���� ����������������� �� ��� # �������� ���������� ���� ������� ����� �������
Informatica – La Programmazione Orientata agli Oggetti
���������
��� ��%%�
�%����
������
��
������
Informatica – La Programmazione Orientata agli Oggetti
��%������%����
������
��
; ���� � ������� ������ �� ��� �� ��������� ������ "� ��������� �� ���������������� � ������� ��� �� � �� �������%
< � ������� ������� �� �������
< � ����� ��� ���� �� � ���
< � ��������� ������ �� ������
; "� ���������=��� ��� ���� ������� �� ����� �� ������� � ���� �������� �� ����������� �� ������ ���� ������������ ��� �� ��
Informatica – La Programmazione Orientata agli Oggetti
����������������������
��������������������� ������������������� �
����������������������������������� �
���������������������������������������� �
�������������
Che succede se devo
aggiungere nuovi tipi di
soldato?
�!
�
���������������������������
�������� ��
��������
�������
��������
Se devo aggiungere
nuovi tipi di soldato il
codice non cambia!
Informatica – La Programmazione Orientata agli Oggetti
-" �������%������ � ��)�������� +�����
+�� ��� ������ �������� # ���������%������& ���# �� �� ����/ ����� ������� �� ������� �� ��� ������ ��� ��� ������� (�� ���������* ��� � ������ (�� ������*& ������������� ��� ����������� �� ����� � �� ����� ��������� ������������
'� �� ���� ���� �� �� ��� ��� ���%� ��������� ������������� ������� ���������� ��������� ������� 1����� � ���� �������� ��# ����� ���� ����)�������� +����� (����+�������� ��%%� ��)��������� ���� ���� ��$�����%�
������������*�
��������%� ��������#
�������������� ���
�,
������������*�
"������ ������ ��������%• �������� %.���%����������� �������% ����������������� ������ / ���� ���� )� � ������ ������& ���# ���� ������� ������������� (���������/ ������& ���������� �������� � �� � ���������*&�� ��� / ���� ���� %� )��
• �������� �� ������� �������� � >���������?������������% �� ���� �� # �������� ��������� ���������� � �������� ����������� ������ ��� ���������� � ������ ������ ��� �� ������������ �������
Informatica – La Programmazione Orientata agli Oggetti
1� ������� ������ ������� �� � ������� ��� ������� � ��%�$����� # ���� ����� � ������� ����:����������� ��� �� ��� ���:������� �� ���� ������������������ ���������������� ��� ��������� �� ���������� ��� �:������� �������
!%����&��%�$�����
������
�.
Informatica – La Programmazione Orientata agli Oggetti
�5
Informatica – La Programmazione Orientata agli Oggetti
�8
Informatica – La Programmazione Orientata agli Oggetti
�9
Informatica – La Programmazione Orientata agli Oggetti
0" ����������#
+�� �������� ����� �������� ����� ������������ �� ������� # �������������#& ����������� ��%
�������� �� ���� ������ ��� �������� �� �� ����/ �� �� ������ ��/ ��������� &
�� ������� ���� ������� � �������
��������%� ��������#
�������������� ���
��
Informatica – La Programmazione Orientata agli Oggetti
1" ��%����)����
"� ��%����)���� # �� ���������/ �� ���������� � ���� ������ ��� ���/ ���� ��������� ������� �� ���� �� �� � �� ������� � �� ����� � �������
@���� # ���� �������� ����� ���������������# � �����$��%������% ������� �������� ������� ��� �� ������ ���� � �� ������� 0���������� �� ���� ��� ��������������� �������� ������� �� ���� �� �� � �� ������� � �� # ����� �����������
��������%� ��������#
�������������� ���
��
Informatica – La Programmazione Orientata agli Oggetti
!%���� � �������2 ��������� � ������ ��� ��������� �
��� � ���� ���������� ������� ��� +A1 ����� � ��� ������� �� ���������� �������� �� ���� �� � ������� �������� � ����� ���� ������� �� ���������& �� �� ���������� �������� �� �������� ������� �� ���������� �� ������ � ���������� ��� ������������ ��� �� ����% �� ��������� ��%%� �%���� (������������*%
B ������� �������� ������������ ����� ������%
�� ����
!�
��� ������%
�����%�
���$��� 3
����%��+� 4
�������� 5
���������� �� ������� ������� ����������� � �������%
>3?666666>4?666666>5?6
�� ����
� �������
Informatica – La Programmazione Orientata agli Oggetti
-�� ���� ������& ����� �� �� ������� �� ���������/ ( ������ � ������* #
� , ��������� ��%%� �%����
!�
-�� ���� ������& ����� �� �� ������� �� ���������/ ( ������ � ������* #���������� ��������%
• � ���� � � ���� ���%� �$�����%� ��������� � �� %��� ���%� (��=��=�����*C
• �� ���� ��%%6�$�����%� $�%��� ���������� (��� ����� ������� �� � �� �������� � �� ������� D , � *�
Informatica – La Programmazione Orientata agli Oggetti
������
!%���� ��%�$�����
• ���� ��� �������� ���� ������ � ���� ������� ���� ������C
• �� �������� ���� �������� ���������� ����� �������� ���������������������� ���� ����������=������%� +� ������ �� �� ���� ����� ��� �� ������� ���& ������ ��� ���� �� �
!!
������� ���& ������ ��� ���� �� ��������� ����� ������& ��������� ��
����� �������������
� +� ������ �� �� ���� ����� ��� �� ������� ���& ������ ��� ���� �� ���������& �� �� ��� � �� �� �����
� ���� ����� �� �� �������/����� ����������� ��� �������������
Informatica – La Programmazione Orientata agli Oggetti
• ��� �� ���� ��� �������� ���� ������������� ��� ������ ������% �� ���������� ����� �������� �� ����������� ��� ���� ������������ �������� ����� �� �������� � ������������ �� ������ ���� ��� ������
����������� �+� ������ �% ����
��%%� ������ �%�����
������
!%���� ��%�$�����
!,
��%%� ������ �%�����
• " ������ ��� ���������� ������������ ��� ������������������� � ����������� �������� ������ ������ �� ����������� ���� ��� ��� ������ �� ������������ ��������� �� ������ ������ ����������& � � ������ �� ������������� ���������� �� ���� ���������
Informatica – La Programmazione Orientata agli Oggetti
-��6��������6�6 ��������6���������6����6�������6�������%6
• "����������� ��� ������� ��� ������������ �� ������� ��� �������
• �������� �� �%���� & ��������� ��� ��������� � �������
• '�������� ���� ��� ������� ������������� ��� ���� ���������� ������������ ����� ������� �� ���������
�������������� ���
!.
Informatica – La Programmazione Orientata agli Oggetti
��)��������&��&���&�%����&&��&!44
�%��� ���������� E== )��������� �� ��������� C�� �! ��������� CFF== A������� �� ���������C�� �! ���������C
���������������� ��������
� ��� �� ��������
�%��� ���������� E== )�������
������������
��������%�
�����%6�����������%6�����
G�������(��6�%�����&6�� �%�����*%6����G����(6*%6�����
�� �� �� ���
!5
�� �! ���������CF��
HC
== )������������ ����� ������� C
���%��,== A��������� �������(����� �& ����� �* E���� I �C����� I �C
H����� ����( * E����� ����J�����C
HHC
)��K�L"2�K%
1� ������� ���$��� # �� �������
-�� ��� �������� � � ������ ������ ������ � ��������� ���%���
Informatica – La Programmazione Orientata agli Oggetti
���+���������&��&��&�������&��&���&�%����&&��&!44'���������&��&��.�������(
���������� �����������C��� ���� (*
E ��������%� 7�����C
������������(���� & ��8�*C
���MMN"� ���� ��� � �� � �������
�� NMM ���������(*MMN � OC
����� �C
H
+�� ����� ����������� ������ �� ��������& # ���������������� �� ������������ ����������� N"O
!8
����� ������������ 22- �� ��������� �� �� ������� �� ���� ����������� ����� ����� ������%
• �%%����� �:���� �� ������� �� �� ����������� ����:������� ������C
• ������%������ � $�%��� ���%� ��������� ��� ������������ �� ��� ����������������� ����:��������
1� ������� ����� ����� �� ������ ��� ����������� ����� ������& ����� �� ��� ������ ������& ����������� ���������� ��� �� ������ ���� ��%%� �%�����
Informatica – La Programmazione Orientata agli Oggetti
��������%�
�����%6�����������%6�����
4��������%�'&(
G�������(��6�%�����&6�� �%�����*%6����G�����������(*%6����G����(6*%6�����
�� �� �� �� �� �� ������
����������������������
�%��� ���������� E== )������������ ����� ������� C
���%��,== 3���������0��������� (* E
���� I ���C����� I ���C
H
== A��������� �������(����� �& ����� �* E
������������
"� �����������%
!9
== A��������� �������(����� �& ����� �* E���� I �C����� I �C
H���� $����%��������(* E���MMNP��� I NMM����MM����C���MMN)����INMM�����MM����C
H����� ����( * E����� ����J�����C
HHC
• Q� �� ������ ���� ��%%� �%����
• ����� ���+������ ��������������� �� ����
���%����� ���� �������� �� �������� (������� ��� # ����� ����������*
• ��� ���$��� %� ������������ �� �%��� $�%���
�& �� ���������& ��� ���� ������� ��������� ���� �� � �� ���� �������
• "� ������������ 4 �������� ���������������� ������ �� �� ��� ������������� ������������� ��������� � ������ ��� �������� ���� ����� ������
Informatica – La Programmazione Orientata agli Oggetti
��������%�
�����%6�����������%6�����
4��������%�'&(
G�������(��6�%�����&6�� �%�����*%6����G�����������(*%6����G����(6*%6�����
�� �� �� �� �� �� ������
����������������������
�%��� ���������� E== )������������ ����� ������� C
���%��,== 3���������0��������� (* E
���� I ���C����� I ���C
H== A��������� �������(����� �& ����� �* E���� I �C
������������
��� ���� ( *
!�
���� I �C����� I �C
H
���� �����%��������(* E���MMNP��� I NMM����MM����C���MMN)����INMM�����MM����C
H
����� ����( * E����� ����J�����C
HHC
��� ���� ( *E ��������%� 7�����C ����������������( *C ������������(���� & ��8�*C���MMN)���INMM ���������(*CH
��������� �� �� ���� � ����
��������
����������������
Informatica – La Programmazione Orientata agli Oggetti
������������
�%��� ������E== )������������ �����P�������C
���%��,== )����������� ����R�5S& �������R�5HC���� ��������R!�S C���� �����R,�S C== A��������� �����%��8�������(����� �* E�� (�M�*
��� MM N'���� ��� ���������T�OC ��� ���� ( *
�������
-�����P�������%6�����G����%6����R�5SG�������%6����R�5SG��������%6����R!�SG�����%6����R,�S
G���'����P�������(��6�%6�����*%6����G���'����P�������(��6�%6�����*%6�����
�� �� �� �� �� �� ������
!�
��� MM N'���� ��� ���������T�OC����
�����P������� I �CH����� �����%��8�������( *E����� �����P�������C
HHC
��� ���� ( *E ������� ��C����� �����C���MMN"��������6����%6OC666666���UU"������C���MMN"��������6�������%6OC66666666���UU"���������CF���MMN"��������6�����6��������%6OC666666666���UU�����C"�����'����P�������(�����*CFFH
��������� �� ���� ���� � ����
������ ����� �
����������������
Informatica – La Programmazione Orientata agli Oggetti
V������ M��������U���� ����� ��� ���C
�%��� ��������� E99 ��������� �������������+� ��������+��
��� ������C������ �������C������ ������C
99 ��������� ����� ��������+��
��� ������C��� �����C��� ������C
������������
,�
��� ������C���� ������C
���%��,
99 �����������
����������(��� ������& ������ �������& ������ ������* E���-������( ������*C���'������(�������*C���3�����(������*C������ I �C����� I ��C������ I ,�C������ I �����C
H
Informatica – La Programmazione Orientata agli Oggetti
99 ������9������
���$���,
���� ���-������(��� * E ������ I CH���� ���3�����(������ �* E������ I �CH���� ���'������(������ �* E������� I �CH
���%��,
��� ���-������(* E����� ������CH������ ���3�����(* E����� ������CH������ ���'������(*E����� �������CH��� ���3�����(*E����� ������CH��� ���7����(*E����� �����CH��� ���1�����(*E����� ������CH���� ���3�����(��� �* E�� (�U� WW �M��* ������ I �CH
���� ������7����(*E�� (�����M5�* �����GGCH���� ���������7����(*E�� (�����U�* �������CH���� ������1�����(*E�� (������M��* ������ GGCH���� ���������1�����(*E
,�
��� ���� '( E���������� ������I ����������(,!&X1K�X&X����X*C��������������(*C�������������'��������(*C�������������7����(*C���MM����������3�����(*MM����C���MM����������3�����(*MM����C���MM ����������7����(*MM����CH
���� ���3�����(��� �* E�� (�U� WW �M��* ������ I �CH���� ��)�����(* E����� ������CH
99 ����������
���%��,
���� �������(* E������ I ���CH���� � ����(*E������ I �����CH���� ������3�����(*E�� (������M��* ������GGCH���� ���������3�����(*E�� (������U�* ��������CH
E�� (������U�* ��������CH
HC
Informatica – La Programmazione Orientata agli Oggetti
��������������
-�� ������� ��� ������� ������� ��������� �� ��������� ����� ������ (+A1*&��� ������� ������������� �� ��������& � �� ��������� �� ������ ������� �������� ��3GG �������� �� ������� �� ������������ �� �������%
�* 0������� � ��������� ����� � ��� �� ���� ������������ � ������������ �� �����/ �� ���������
!* '� ���� �� ��������� � ��� � ���������� ����� ��� ���� ����������� �� � ����� ��� �� ���� �� ��� �� ��� ������� �� ������ "� ��� 4 ������ �������� �� ������Y � �����Z� -�������� � ���������� ���� �������� �� ��������� �� ���������� ����� ���� ����������& � ���������� ����������� ��� ���� � ���
,!
������� ����� ���� ����������& � ���������� ����������� ��� ���� � ����������� ����� ������� � � ���������� ����������� �� ��������� � ��� ������� ��� ���������� ��������� �� ���������
,* "� ��������� �� ������ ������� ������������ ����� ���������� ��� ������ ��� �������������� � ����� ����� ��� ������� ("� ���������� �� ������ ������� � ������� ��������� ������������ ����� ���� ����������*�
.* '������ �� ��� ��������� �� � ��������� ��� ����� � �������� �� ��� ����� "� ���������� �� �������� ���� ������� � ������� �� ������ ����� ��������� ��������1� ��������� ������ �� ���������� �� ����� ��� ���� � �� ������� 1���������� ���� # ����� �� � ���� �� �� ���� � �����