Thread View: cn.bbs.comp.program
1 messages
1 total messages
Started by Bird Bird
Thu, 25 Dec 1997 00:00
�����������
Author: Bird Bird
Date: Thu, 25 Dec 1997 00:00
Date: Thu, 25 Dec 1997 00:00
867 lines
82836 bytes
82836 bytes
�����������
���ֿ���
ǰ ��
�������������������Խ��Խ���ţ��ƺ���������˶���������Ϲ�����һ
��Ĺ�ʱ����֪��Ȼ��δ��֪������Ȼ������Ķ���Ϊ�Σ��������������ѧ
����Ϊ�Σ���Щ���Ⲣ�������˶��ܴ�������ġ�
�������ѧC++���˿�Ҳ��ʼ��������ֻ����һ�����еķ��������
�Ǵ�C++�Ľ̿���������ݸ���ǣ����ԣ����һ����������ʽ���
(OOP)��Ƥë������������ѧ��C++�𣿱�������ѣõ������ѧ�㶮����ʿʵ
�ڲ��࣬��������Ū��C++�ĸ��١����ȱ����������ѧ���������C++��д��
��ʽ����Ҳֻ�DZȽ��ر�ģð��ˡ�
������ʵ����������ź���Ȥ�������ѧ������ͼ�����Ƕ�����Ŀ�����������
��ļܹ�������������Ķ�����ӳ�䵽������ģ�ͣ���ת����Եij�ʽ�롣Ŀ
ǰʹ����������������������ᴺ�������չ������������Dz���רҵ��
����ʦ����Ӧ�ö���������˽⡣
�����������У���������������幤����Ϊ���۵ĺ��ģ����ᴥ��C++�������
�ƵĹ�ϵ����˾��ɵ����£������ٲ��ͣˣ����й������������ĺ���
�� һ �� ��ν��� (OBJECTS)
���������ԭ����Object������Ҳ���˰�����Ϊ�����塹������Ŀ������Ŀ�ġ�
�ȵȣ���Ϊͳһ����ڱ�����һ��ͳ��������������Ϊ������������ѧ
����һ�ɹ��ԡ�������� (Object Oriented����дΪOO)��ͷ�Ρ����������
��ʽ��Ʊ��OOP (Object Oriented Programming ) ���嵼�����(Object
Oriented analysis, OOA)����������ʽ����(Object Oriented Programming
Lagnage,OOPL)������ƣ���һ���㡣Ȼ���������ʲ���أ�����ѧ�Ҹ���
һ�����壺
����һ�������塢�������һ������ȷ�綨��Χ���������������Ҫ�����
��������������ġ�
�������������ӣ������в���̤�������Ǹ�������������Ͽ��Ľ���Ҳ�Ǹ����
�����������ɫɫ������Ҳ��������������ิ��ˡ��������Ҷ����Խ���
�����ⶨ�����û�ã�����������·���ܣ����µij�ʽ�������档�ٽ�һ��ȥ
�о������ߵ����г��������Ͻ�Ϊ���ǣ����Ҳ���������������ǰ�����ɲ
������Ҳ��ûɶ��֣����������ϵ������������Ѿ���������ߵ����г�������
�����ԣ����Ͻܣ�������Ĺ��ܣ�ǰ��ɲ��������Ȼ���������δ������
����Ϊ��û˵�ҵij��������ӣ����ҵij�ʽ���?��֪������࣡�ٶ�������Ҳ
�в���̤������Ľ�̤���ij������ܽ��Ƶģ�ͬ��ģ���ij�Ҳ����ǰ��ɲ��
������Ȼ����ij�Ҳ�Ǹ�����������ᵽ���ߵļ����µ����г������������
������Ҳ�������г�����������ģ�Ҳ������ֽ��ģ���ʱ���ǿɶ���һ���С�
���г����ġ����(class)�����Ҳͬ���и����壺
������춾����������ʡ���ͬ����Ϊ�����弰��ͬ��ϵ�����֮������Ϊ���
����dz��˵������Ǿ���ͬ��������ļ��ϣ���֮����������ԣ������
Ϊ�䡸����(instance)��
������ͳ��������Ʒ�ʽ�ǽ�����Ķ������֮�ᣬ��ȡ�ʵ������Ͻṹ����ʾ
��������Եij��������㷨���������ϣ����߿������ƺ��������ء�������
�������ԡ����������ص����Ϻͳ����ϳ�һ�壬ʹ�����ߵĹ�ϵ����������
�ף�������������ʽ��������ص�֮һ��
������Ѷ����(information hiding)��Ҳ��������ķ�װ��(encapsulation)��
�������ֳ�������Ա����ʹ�õ����Լ��ܱ������ڲ����ԡ�����������ȡȨ
������Ա����ʽ����������ô���������²����ĸ����á���춷�װ��
�ڵ������и���������ۡ�
����Cox ����Ϊ���ǿ��Խ��ɽ��������ʽ�����������IC��Ŀ�꣬��������Ϊ
��������ظ�ʹ����(reusability)����̳�(inheritance)���Ǵ���ظ�ʹ�õIJ�
�ԡ�����̳п�����Щ���ⲻ��������ȴ�����У������г���������˵����װ
һ�����ͳ���һ���綯��̤�����綯��̤����Ȼ����ǰ��ɲ����Ҳ�г����
�ʣ�ֻ���������������綯��̤���������ɽ�̤���Ŵ������ġ��̳�
���Ӵ���������ر����á��������Ӵ�����������ɾ�ҳ�ģ��ɷŴ���С��
.....�ȵȸ�ʽ������Ӵ�����ϸ��������������½��и�����Ľ��ܡ�
��������������Ϊ�����ʻ������ʻ����������Ǹ��൱�������
�ʣ�������ļ�ʻ��������һ����ʻһ�ʺ�����ʵ���Ͼ��в���
�Եļ�ʻ��Ϊ���������ʳ�Ϊ�������ԡ�(polymophism)��
�����?�棬��֪��������������ʵ�ڲ����Խ�����ǵ����⣬��ν������
������������أ���η������������Ŵ����������һ���ϵͳ����������
��Ĺ�ϵ����Щ������δ֪�����⡣�������У����߽����൱ƪ�������������
�ۡ������������Ӧ���Ʋ���(Booch)���о��ɹ�����Ч����ͼ����������
�Ľṹ�������������Ҳ��������̸����Ϊ������۽�ƫ��춴�ͳ��������ۣ�
����Ŵ����Ƚ�ĸ����Եýϱ��������߽����Ͷ�ɭ (Lorensen) �����������
OMT ( Object Modeling Technique ) Ϊ�Ǹɡ�����������һ������ķ�չ��
�̡�OMT���������Է�չ����ķ����������ʵ�������Ч���൱���롣
��������������幤�������ص㣬������ͼ�Խ�����ģ�͡��ķ�ʽ���������⡣
OMT���������������ֻ�ģ���������������Ľṹ������ģʽ�����Ƿֱ���
��
������(Object Model)
������������Ľṹ�������Ĺ�ϵ
����̬ģ��(Dynamic Model)
����ϵͳ��״��ʱʱ���б仯����̬ģ�����¼������״̬�ĸı�������ϵͳ��
�Ľ������á�
�������(Functional Model)
��������ģ����OMT���ݴ�ͳ������Ƶ�һ���֡��������������ͼ(Data Flow
Diagram��DFD)����������ת�������֮���̡����DFD�����ѿɲο�����
94�ڱ�������������Ƶ�˼ά��һ�ġ�
����OMT��������Ʋ����Ƿ���(Analysis)��ϵͳ���(System Design)�������
��(Object Design)������ʵ��(Implementation)֮��������������۵㽨��ǰ
������ģ�ͣ��ټ�����ơ�ͳ�ϡ�Ȼ��ӳ���Ϊ��ʽ�롣
���������������ķ�ʽ��������������Ч������������Ƶ�Ч�ʣ�����Ȼ��
�ɾɷ���ת���������ʱ���ܻ��н��͵������ٸ����Ե����ӣ�Borland ��
˾��Quattro�Ƴ���������Ƴ�Quattro Pro����������Ӵ���������ˡ�������
�ٶ���ȫ�ǰ����������ͣ�ҲʹBorland��˾����Ǯ���ù�˾�ų���ɳ�
�ʰٷ�֮���٣��������dBASE����İ��Ŵ﹫˾��dBASE III�Ƴ���������Ƴ�
dBASE IV 1.0�棬���һ��ǰ���һ��Bug���еġ����ᣬ�ڼ�����ǰBorland���
�����˰��Ŵ
1.2������(Object Model)
��������ض��߱�������Ĺ�Ҫ�أ�����(attributes)����Ϊ(behavior)��Ҳ
�������������(operation)���پ�ǰ������ӣ����г�����й�춳�����ϵ�
�Ⱦ�̬�����Ͼ������ԣ������г��������Ķ�������ǰ��ɷ���ȵȶ��������
��Ҳ����˵������о�̬�����ϳ�Ա���Ǹ��������ԣ�������̬�����㷨
�������������Ϊ��������(operation)���Ǻ�ν��������ν����(Method)��
��������ʲ�ͬ�أ�ǰһ�����ᵽ����ʻ��������Ĺ���������ʻ����
�˱��Ǹ�operation����ʵ�ʵġ�����ļ�ʻ������춸���������ض�����
(method)������˵�����γ��ķ����Ϳ������߾Ͳ�һ��һ������Ϊ�Ǽ�
ʻ�����ⲻ�ǹ���ͷ������Ĺ�����
�����뿴�ٴ�үע�⣬�ڻ�δʵ��֮ǰ�����еĸ���dz��ģ�������г�
�˿�����������⣬���ؼ���ȥ���ڵ�������Ƶ�ϸ�ڣ��������Ҫ���������
�����������йء�
1.2�����֮��Ĺ�ϵ
1.2.1������(Links)
�����ٶ����������ж����������(instance)��һλ������ʦ��һλ����ͬѧ��
����ʦ����ͬѧ��������������Ժ���Ϊ�������Ҳ����ġ�����ʦ����ͬѧ֮��
����ij�ֹ�ϵ���ɲο�ͼ1.1���Կ�������ʦ���̵�����ͬѧ��������������ͬ
ѧ���̡ܽ������ʦ�������������Ĺ�ϵ�������ᡣ
1.2.2 ����(Associations)
������Link����IJ��֣����ǵİ���(instance)������ʦ����ͬѧ������ʦ����
����Ǯ���ͬѧҲ����������֣��������������һ�㻯�ᣬ���ǵõ���������
����������ʦ���(class teacher)��ͬѧ���(class student)����ͬѧ��
��ʦ֮������ļ��ϱ��Ϊ����(associations)��Ҳ����˵����������ʵ������
����Ĺ�ϵ�����ǽ��������һ�㻯�����DZ�ɵõ�����(association)��
���������ڴ�Ӧ�Ƚ���һ������������ķ��������������һ�㣬��ʵ��
��������������������ʦ����ͬѧΪ�о����ٽ����ǵĹ�ϵ������
�ỹ�и������ӡ�
����һ����ʦ��ʩ�̵Ķ���ͨ�������λѧ���ֻ��һλ����ʱ������̵���
��ϵ���һ�Զ�(one-to-many)�Ĺ�ϵ����ͼ1.2��ʾ������һ��ѧ��ֻ��һλ��
ʦ��̣��̵���ϵ��Ϊ1��1(one-to-one)����һ��ѧ�����ֻ��һλ��ʦ����
����ϵ�ͳ��˶��һ�ˣ�����������������õ�ͼ�α�ʾ�������ұȽ����
�IJ��졣����ʵ�����У���ϵ���൱�߶����Եġ�����˵������Ǹ�ѡ���Թ�ϵ
(optional association)��������һ��һ���ƹ���У�һ�����˿���ѡ���?
���ޣ�����Ψһ����ż����ͼ1.3��ʾ�����й��ʱ������һ������Ƶģ��
�ӿ���һ�����Ŷ�û�У��о�С�����ֻ�����һ���ӣ�����������ܾͲؽ���
���ˣ������ͼ1.4��ʾ�ˡ�ͼ1.3�еĹ�ϵ��1���ޣ�ͼ1.4������ࡣ������
���ر������Ҿ��û�����˼��
������ϵ(association)Ҳ���Բ�ֻ��춶�Ԫ��ϵ(binary association)����
��������Ԫ��(ternary association)���Ԫ�Եġ�ͼ1.5 ��ʾ��ʦ��ѧ���
�ҵ���Ԫ��ϵ��
1.2.3 ���������(Link attributes)
����ǰ�����ᵽ�����ᶼ���ģ�����ʵ����У�����������������Χ�ϵ�
���ơ�������һ����ʹ����(multi-users)����ҵϵͳ(operating system)�У�
ÿ��user�Ե����Ĵ�ȡ���в�ͬ��Ȩ�ޣ������93�ڽ�����������п�MS-DOS
�����н��ܣ���λ���ٿɷ��IJο�һ�¡�ʹ��������㼶��ͬ�����Զ�д������
����ܶ�����������մ�ߵĻ�ᶼ̸���ϡ���������������Ϊ�˱�֤�����İ�ȫ
����Ĺ涨����ʱUser�������ڶ�춵�������Ĵ�ȡ��ϵ�У�����д�ȡȨ��
���ԡ���ͼ1.6��ʾ��
����һ����������������Գ�Ϊ�ʸ�(qualificiation)���ɽ�����Ϊ�Ǿ�����
�Ե����ԡ�����ؿ���ͨ����ɡ���ͨ�С�ֻ���?�ܾ���ж���������ֻ��
��ǰ�Ž���ų�������������м䡣������ֹ�ϵ�ǡ��ʸ��ж����⡣
1.2.4 ����(aggregation)
���������ϡ�������һ�������ɵĹ�ϵ������������������������������
�����������������������ȵ��������ɵļ����塣��������ǣ�Ԫ����һ
���֣�������ǣ������һ���֣�����������ǣ������һ���֡���������
�������һ���֡�������ǣ������һ���֡��������طǣ����֮һ���֣�
��������������Ӵ������Ҳ�����ã���������ð�ť������Ӵ������ϳ�һ
���Ի�����������Ϲ�ϵ(aggregation)�����ͺ��Ŵ����������Ը���ˣ�����
��ע�⡣
1.2.5 �Ŵ�(Inheritance)�����ɹ�ϵ(Generalization)
����������ֻҪ�Ƕ�����������нӴ������Ѷ��ض��ԡ��Ŵ���(inheritance)
����ʲ�İ���Ŵ����ɹ�ϵ�ṩ�˳�ʽ���ظ�ʹ�õĿ��з�����������ѧ��
�۵������Ŵ����Ӵ�����綼������״��ɵ��ԵĹ۵������Ŵ����Ŵ�������
������Ԫ�����ã����ҷ�����ͬ����Ϊ�Լ����Ƶ����Ի�������һ�����Ŵ��ĸ�
����� ( parent class ) �����dz�Ϊ���������(super class)�����Ӵ���
��(child class)����Ϊ�����(subclass)�������������֮��������й���
��ϵ(Generalization)����ͬʱҲ�DZ�ʾ��is-a����a-kind-of���Ĺ�ϵ����
���ʲ���أ������İ���(instance)ͬʱҲ�����Ǹ����İ�����������ʮ
�ֵĺ��?�ٶ�������ĵĺ����ͬ�����罫�ɱ���IJ��������
����������(operation)����ȷ�������������ϣ���������ڲ�֪���״
���£�������ܻᵱ����ʧ������Dz����ġ��������(refine)��
����(append)һ������������(attribute)������(operation)֮�ڲ����� (
method ) ���������ǰ���½���˵���������ͷ����IJ��졣����(operation)
��һ�������ġ�ǩ��(signature)��Ҳ����ijһ��������ơ��������ڴ���˵
���ģ�����춡������ԡ����ģ���νΪ����Ӧ�������������ʽ���������
�����ڲ��ķ���(method)���Է���µ�Ҫ���÷���������Ҫ��ɵ�Ŀ��Ӧ��
�;ɷ�����һ�µģ������¶��塣�������ǰѡ���������Ϊ�����ϵļӷ�������
ȴҪ����Ϊ�������ⲻ��ͦΣ�յ��𣿲��ҵأ�Ŀǰ�ij�ʽ���Բ����������ؾ�
����������DZ�ڵ�Σ�գ����Ϊһ�������ݾ���
�����ղ�������������һ���ص㣺Ϊ����Ӧ������������ԣ�����������ڲ�
�ķ�������������ǩ��(signature)ȴ����ά����ͬ�������س��Ա�Ϊ����Խ��
(overriding)������C++�еġ��������롹(overloading)������ͬ�����������
�Ƚϡ�
�����ڴ˾�һ��������һ�����λ�ͼ�ij�ʽ�У����dz����ṩ�㡢�ߡ����ߡ�
����Ρ�Բ�εĻ�ͼԪ�����ڴˡ����У����߽����������(OOA)�й�����ģ
�͵ķ���������������ӡ�
�����������������������ͼϵͳ�ĸ���ͼ��Ԫ�����ȷ���������Ϊ������
˵��ռȥƪ��ƣ��ʰѸ����������������ͼ�С�����������ᣬ�������
�������ŵģ���Ч�����Ի��������ҽ�һЩ����������������������
Ϊ����������ڡ������ƺ�û�У�����һ���ǡ������������Ĺ�ϵ(link)����
����Щ�������Ҳȱ�����������������۲���Щ����Ƿ�����һЩ��ͬ�����磨
���Լ���Ϊ���������õ�������ȡ�������γɸ�����ڡ����У����ǿ����Ƚ�
����ֳ����࣬�ֱ�����ά��һά����άͼ��(��generalization)������һά��
��άͼ�ο�������(scale)����������άͼ���м�հײ����������ɫ(fill)
��������ɫ��λ�á��ƶ����������ȵ�������ɳ�һ�����յĸ����Ҳ����
ͼ��(figure)�����������ֵõ�һ���µIJο�ͼ1.7��ͬʱ���ڴ�Ҳ���Կ�
�����þɵ������
������ͼ�У����Ƿ��������ʾ(display)�Ĺ��ܱ���Խ(overriding)�ˣ�Ϊʲ
���أ���Ϊ������ͬ������ͼ��(figure)�Ǹ����Ҫ��ɶ�أ�һ����Ҳû�У���
����Ա�ʾ��subclass�Ĺ�ͬ���ԡ��κ����ֻҪ��һ�������dz����
(abstract)�����������һ���������(abstract class)����������ܲ���
����(instance)����ȴ�ɹ�Ϊ�Ŵ��ĸ�������춳���������ʵ�����ʵ
�������������Ӵ�Ҳ���Բ�����(instance)��
������һ��������Ӧ���Ŵ������Ŵ�̫�����ܻ�ʹ�Ӵ�ö���̫�����
̫�Ϻ�����Ч�棬�������ܺã����߲���ǿ���ܡ�ʮ�����������զ���ˡ�
Ϊʲ���أ�������ģ����������Ӧ�ÿ��Ա�������Ŵ��������µ���𣬵���
�����������Ŵ����������������Ծ�Ȼ�����ʡ��ˣ��������ľ����Ի���
������������������ˣ��������������Ŵ����ǿ��ܻ���û��Ч�ʣ���ˣ�
������Ϊ����ظ��Ŵ��Ĵ���Ӧ�û���һ����Ȼ���ޣ�����������Ǽ����أ���
�ͺ�������Ƶ�����û��й��ˡ�
1.2.6 ���ؼ̳�(Multiple Inheritance)
����ǰ�����ᵽ�Ķ��ǵ�Դ�̳�(single inheritance)��ʮ�ֵ��������֮�£�
���ؼ̳�����һ�����ͬʱ�̳���ͬ��������ԣ����ַ�ʽ��ӽ�����˼��
�ķ������������Ҳ���������⡣��ν���ؼ̳м���һ���������ͬʱ�̳���
�ุ���ͨ�����ǽ����������Ϊ���������(join class)��
�������ؼ̳������鷳���ǡ�ģ�����ɡ�(ambiguity) �ķ����������
������е����Ի��������ܾ������Ƶ�ǩ������������Գ�ʽ���Ե����Ա�
�⣨��ȻijЩ��ʽ���Կ����趨�̳е�����˳����ʽ���ʦӦ��Ҫ��������
ģ�����ɵ����⡣����ֵ��ע���һ����ijЩ�Ͼɵ���������ʽ����(OOPL)��
���߱����ؼ̳е����ԣ����磺Smalltalk-80��C++ 1.2��Objective-C��
1.3 �����������ϵ�ıȽ�
������������֮��Ĺ�ϵ�Ǽ����˸���Ȥ�ģ�һ����ʽ��̫���ܽ���һЩ��
������ܹ���ɡ�ǰ�������˵���(aggregation)��������������Ĺ�ϵ
��죬������У����ǽ�����������ɶ���졣���������¿�֮ǰ�������Լ��ȱ�
��һ�£������Լ��Ƿ�Ҳ����ˡ�
1.3.1 ���Ϻ�ϵ(association)�ıȽ�
���������ǹ�ϵ(association)һ��������Ϲ�ϵȴ�ر�ָ��ij���ض����
������Щ�����ɵġ��ͺñ�һ����������������˿��֮��Ĺ�ϵ����Ҫ����
����ʽ�ǣ����һ���������һ����������Ԫ�أ��������ڡ����ϡ��Ĺ�ϵ
�ˡ�
1.3.2 ���Ϻ��Ŵ�(Inheritance)�ıȽ�
�������Ϻ��Ŵ�����һ���Ŵ���ϵͨ������Ϊ��is-a����is-kind-of������
һ������һ�֣�������ǰ���Ѿ������ˣ����������a-part-of����һ��
�֣���
����������ʱ�������ѡ�Ϲ�ϵ������Ŵ������á��Ⱦ�һ���нṹ
(list)�����Ͻṹ��һ�ִ������ϵĻ�������ѵ�(stack)��һ�� FILO (
first in ��last out ) �Ƚ�����Ľṹ������ⷽ����������вο������Ͻ�
���йص��鼮��������Щ�����������������˵�����ӽڵ㣬ɾ��ڵ�ȵȡ�
��������Ҫʵ���ѵ�����ѵ����Լ�Ωһ�Ĵ�ȡ����Ҳ�������������������
(push)�͵���(pop)�����ǿ��Բ�ȡ���ײ�������á��ѵ�����𡣵�һ���ɴ�
���Ŵ����µġ��ѵ�����𣬵�ע�⣡��Щɾ��ڵ�֮�������(operation)Ҳ
�ᱻ�Ŵ�������Ȼ��Զѵ���˵����������Ҫ��Щ���ŵ�������Ҳ����Ҫ����Ϊ
���������ɾ��ڵ㡣��˽���ɵڶ��ֲ��ԣ��Ѵ��кͶѵ��Լ���
(aggregation)������������˵�Ѵ��б�ɶѵ���һ���֡���ͼ1.8��ʾ��
����������ģ��(object model)�IJ��־ͽ��ܵ��ˣ�������ģ��������
��Ҫ��һ���֣������˶����ġ�
�ڶ��¡���̬ģ�� (Dynamic Model)
2.1 ��˵
������һ�������۵����ģ�ͣ��������������о�̬�IJ��֡���������Ҫ��ϸ
��̽���������Ϊ�������֮��Ľ������á�
2.2 �¼�(events)��״̬(states)
����������˵������е����Լ�����(link)������춸������״̬(state)����
һ���֮״̬������¼�(events)��Ӱ���ı䡣������������У����ᷢ��
���ǽ�ƫ��춼�ʱ(real-time)��ʽ����ƣ���ʵ��������ˡ�
�����¼���ָ������ijʱ�̵�ij�£�����������������һ��ʱ�䡣�����
���������һ���¼����¼�ͨ����һ���������������һ��������ܡ�������
��ֻ�ǵ����Ե�ѶϢ���ݣ����������д���ֵ���¼�Ҳ��һ����������
������Ծ߱������ԡ�����˵�����绰����(dial)�������Ҳ������ij������
������˵������5��������1���ȵȡ�ͬ�?������Ҳ���Ա���Ƴ��¼�������
�����д�����롣
����״̬(states)��������Ի�����ij����塣״̬�DZ����Ķ���ֻ�ڴ��¼���
����Ÿı䣬������ǿ���Ϊ���¼�������ʱ��Ϊ�������״̬��Ҳ����˵��
ij��״̬�������һ��ʱ�䣬ֱ���¸��¼�����Ϊֹ��
����Ϊ�˱�ʾ��һ�������¼������Ƿ����˳�����ǵñ�һ���¼��ġ��籾��
(scenario)������籾ʮ����Ҫ���о籾������ģ�͡������������籾�IJ���ͨ
������ƽ�����ܷ�������Ϊ���壬�ټ������⡣Ȼ��籾Ҳ�п��ܲ����꾡
�����ǿ��Ըģ�
�����籾������֮�ᣬ�������¼���(event trace)��ģ�⡣�¼��ٿ���
��ȷ�Ŀ�����˭�������¼���˭�������¼�����ʱ�����¼����Ǹ��¼��ȷ���
���ȵȡ���������һ���¼�����ͼ(event flow diagram)����ʾ�ĸ�����ò���
��Щ�¼����ý�����Щ�¼��ȵȡ�
����״̬ͼ(state diagram)�������ı�ʾ���¼������̼���״̬��Ӱ�죬��
�½�������λ�ͼ����״̬ͼ�У��ýڵ�(һ����Բ��)��ʾ�������״̬
(state)�����ͷ����������¼���ƣ����¼�������ͼ�Ͽɼ��Ա�ʾ���жϡ�
����ֵ�Ծ����¼����������������ź��̵Ƶ�״̬ͼ���ڴ˶�Ҫ�ļ���˵����
�����־ϵͳ�Ǹ������۾����ĺ��̵ƣ�������������䳵ר�õ����Ƿ��г���
�������Ƿ�Ҫ��ֱ�г����л���һ��ʱ���ת�䳵�ߡ�����Կ��ó���������˵
�ϱ���Ҫ����ʱ�������ж�Ҫ��Ҫ����ת��ƣ����Ҫ����ֱ��������
�ߵƵ�״̬ȥ���ڴˣ��Ǹ��ж�ֵ��������¼��ļ�ͷ�ϣ������������ơ�
2.3 ����(Action)��(Activity)
��������ͼ�ϱ���¼���״̬���ж�ֵ����̫����ͨ�������¼�֮��Ӧ�û���һ
���Ӧ�Ķ��� ( Action ) ������ͼ�еı�ʾ�������¼��������б�ߡ�/����
�����¼��ķ���ֻ�Ǹ�֪��ȷ��״̬�ĸı䣬������ת��״̬����¼��أ�
���뿿�ڲ��Ļ ( activity ) ���ı�״̬���������ܰ���һ����������
( operation ) ��� ( activity ) ��ͼ�еı�ʾ�������ڽڵ���д��
do:activity name��������е�����һֱ��ǿ��״̬ͼ(state diagram)�Ļ�
������Ϊ��ͼ��ʾһ����ʽʮ�ֵ���Ҫ��ǰһ�����ģ����ͼ������״̬ģ��Ҳ
��ͼ����һ�¹���ģ�ͻ��Уģƣ�ͼ���ɴ˿�֪ͼ�����Ҫ�ԣ�����Ӧ�úúõ�
��Ħͼ�εĻ�����
�����¡�����ģ��(Functional Model)
��������ģ�� ( Functional Model )��OMT ���ֻ�ģ�������á���ͳ����һ
���֡�����ģ����������ϵͳ�����ϵ����̣����ϱ���Щ��Ԫ���ܴ��?����Щ
��̣���ȴ����������������ᱻ����ġ�����ģ����Ч�������ڱ����� (
compilers ) ֮�ി������ϵĹ���������Щ������������ϲ���춱����
������������ڴ�ͳ����������У���ȥ���ģ�ͣ���ʽһ�����д��ֻ������
�������������Ϊ��Ҫ�۵㣬����ģ��ֻ�����?����������ģ�Ͳ����ˡ�
3.1 �ģƣ���������ͼ
������������ͼ�Ļ����ǹ���ģ�ͱ�ʾ�����ĺ��ġ��ģƣ�ͼ�Ļ�����ǰ����ͼ
�εĻ��������ü����¾�ͼ��Ԫ�������ܡ�
3.1.1 ���?Ԫ(process)
����������һ����Բ�εĽڵ�����ʾһ�������?�������?(process)���Խ�
���������ϣ�����һ�ض����������������������ת�������������
3.1.2 ������(Data Flow)
������������ʾ�������봦��֮����ݵ����ϣ��ڴ������Լ�ͷ������ӡ���
ijЩ�����У�һ�����������ҵ���˼�ǽ���һ����ͷ�������ʾһ������������
�ܰ�������ϣ������ǻ�����Ҫ�ֽ����и��������������ʱ���Խ��������
��ϸ��������������Ŀ�ġ����?��Ԫ��
3.1.3 ������(control flow)
����������(Data flow)ֻ�ǵ����Ĵ������ϣ����Ϳ���ѶϢ��Ȼ��ijЩ��
��(process)����Ҫ������������������ϴ���ķ�ʽ������ķ�ʽ�����Ǿ���
��������һ��ֵ����,�ڴ������������Կ����������������⡣���Ƶ�����
�Dz���(boolean)����ֵ��ֻ����α������������Ͽ�����Ӧ����춶�̬ģ��
(dynamic model)�еġ��¼���������Ϊ�����ϴ������ܲ��ɷֵĹ�ϵ����DZ�
�����������ˡ��������Ļ������Ե�����ͷ��ʾ�¼�ѶϢ��
3.1.4 ���ϴ���(data storage)��Ԫ
�������ϴ��浥Ԫ����ΪDFDͼ��һ��ר�����Դ������ϵı�����������ϴ���
��Ԫ�Ļ������Զ������߱�ʾ��
3.1.5 ������(Actor)
����Actor��������ʾ�������Ķ˵㣬��������㣬Ҳ�������յ㡣��������С
���������ʾ��Actor�����ϴ��浥Ԫ�м������ơ������ϴ��浥Ԫ�DZ����ģ�
���ִ���κζ�������Actorȴ�����ϵ�ָʾ��һЩ����������������ϻ���
�����ϵĴ��?�����ʱҲ����Ϊ���ս��ߡ�(terminator)��
3.1.6 ������
����������һ����������������塣��������ʲ����˼�أ���Ϊ�ڣģƣ�ͼ
���ܻ�����������������������Ҳ�������ϴ�����硣���������������
ʾϵͳ�������㼰����յ㡣
3.2 �������̬ģ���빦��ģ�͵Ĺ�ϵ
��������ģ��������һ������ģ����ʵ��ȥ������Щ�£��ģƣ�ͼ�еġ����?
(Process)��Ԫ���Զ�ӳ�����ģ���е�����(operation)�������������������
�����ԡ�������(control flow)ǰ��Ҳ˵��������춶�̬ģ�͡��������˵����
��ģ�Ͳ����Ƕ������ڵģ����ǻ����ģ�ֻ��˵���Ǹ����Բ�ͬ�ĽǶ���������
�塣����ģ�������ϵ����̼����������ͼ�����ܱ�ʾ������ִ�е�˳�����
���迿��̬ģ�������㣨���ǵ�ԭ���𣿣��������봦�������̹�ϵ�����
�������(operation)������ϵ����������ϵ����˼�ǣ�����(operation)֮
��IJ�ι�ϵ����ģ�齫��������и�ɵ��µ���ģ�鴦�?���ģ���ڵ���
�ԣ�Ҳ����״̬�ĸı䣬�Լ���������α��������ִ�з������ɶ�̬ģ��
������˶�����е�������˵������ģ�Ͷ��ǻ���ұ�Ҫ�ģ�ֻ��������
Ҫ�̶Ȳ�ͬ���ѡ��������������۵������չ����Ҳ������������ģ������չ��
������ ���� (Analysis)
4.1 OMT���������
����OMT������ʵ����һ�����幤�̷�չ�����ڴ���ϵ�����Dz�ȡ���в�������
�����壺
������(analysis)
���������������˽����ⶨ�忪ʼ����ν����������̬��������ģ����������
�嶨����(software domain)�������������ʵ�����м���Ĺ�����
��ϵͳ���(System Design)
���������ģ��(Object Model)Ϊ����ʼ����ϵͳ�ļܹ������嶯̬ģ�͵�
�籾����������ʵ����Ľ��ת���ɵ�����������̬��
��������(Object Design)
�������˵ϵͳ����dz�������ĵĹ��������������ƾ��Ǽ������ˡ��ڱ�
�����У�����ģ�ͱ�������ϸ���ģ�ϸ���������廯���������ѻ�����
ģ��ת����ʵ�ʿ��еķ�����Ȼ�����ģ�黯�����Ὣ������һ������
��
��ʵ��(implementation)
����ʵ�����ǽ�ǰ����õĽ��ת�ɶ�ӳ�ij�ʽ�롣�����ڴ��½��У����߽���
�������C++��Ӧ�á�
4.2 ����
�����ⲿ�ݵ�������ǰ���µ����ݼ����������ɢ�����ģ�͵Ľ������ˡ���
�����ڵĹ������ǰ������������������ǿһЩ�ص㡣
����������������Ҫ�˽�����Ķ��壬��˵�һ���������������������Ū��
�������ϸ�ڣ�����ʹ������ȷ�����˽⣬Ҳ����˵Ҫ���������(problem
statement)����������Ľṹ������Ļ���ʹ�ͳ����Ʒ�ʽ��������
�ġ���������ǰ�ڵ����н��͵ú������ˡ�
�������ģ�͵Ľ��������Ȱ�һ������Ľṹ�������Ժ�������Ϊ�оٳ�������
������������Ĺ�ϵ������Ҫ������к������ص����Լ�����ɾ��ͬʱҲ
Ҫȥ�����������Լ�����ɾ��ͬʱҲҪȥ��������صĹ�ϵ����ᡣ�ʵ�
�����þ��������ͬ����������ȡ����ͬ�ĸ������....����һ����Ҫ
���ģ����Ҫ��˵���ļ�����¼��������ʺ�������Ŀ�ġ���ص������ڵ�һ��
�ж�˵���ˣ���������вο���
������̬ģ�ͱ���������¼�������˳���״̬�ĸı䡣���ȣ������һ��
�籾���籾����Դ�����ǻ���ʮ��Ĺ۰����ۻ�Ĺ��籾�����ݻ��?����
ϸ���ţ�Ҳ���ܺ͡�����硹һ�����ģ�����ȴ����Ҫ��Ȼ��Ҫ�ҳ���Щ�ǡ���
�������¼������źţ����룬�жϵȵȡ�ͬʱҪ����ÿ�������¼�����Ķ���
(action)�����丱���á�Ȼ���Ծ籾Ϊ������¼���(event trace)��������
�����������˳���¼���Ŀ�����(target object)��
����ʹ���߽��� ( User's interface ) Ҳ���ڴ�ʱ�ڽ�����ʹ���߽�������
�����ѹ����ģ���Ϊ����Ѿ�������Ľ����������� ( easy use ) ��������
( user friendly ) �ģ���ǵ����������������֪��Ч����Ρ�Ȼ������
���ò������������ɳ�ʽ���IJ��ݺ�ʹ���߽���������ġ������ڽ��죬����
�ĺû�ͨ������ʹ���߽����ж���ʹ���߽���������Ŀǰ���Բ�û��һ����ͳ
һ����ʽ��������Ҳ������һ�¹��ϵı���
������춷�������ģ�� ( Functional model ) ���棬��Ҫ�Ĺ������ǽ����ģ�
��ͼ�������ϵ�����ʹ�������ʾ����������ͬǰһ�����һ��Ȼ�᱾��
����ϸ�»�����ԭ������Ĵ��?Ԫ����ϸ�ֳ����ڲ��ģģƣ�ͼ��һ��
�ظ�������裬ֱ�����ǵĽṹ�������ٻ�Ϊֹ��
������ ϵͳ���(System Design)
����ϵͳ�����������������г��������һ�����ڱ�������һЩ��Ҫ��Ŀ��
����ģ�黯����Դ���䡢ϵͳ�ṹ�滮�ȵȹ�����
5.1 ģ�黯
������һ��Ҫǿ������ϸ�»����ĸ���������ǽ�һ����ϵͳ�г�Сϵͳ��
Сϵͳ�ٷֳ�ССϵͳ.....��˵ݻ�ʽ���з֣����Է�������λ��ָ����
������һ����������ɼ�����ϵͳ������ϵͳ�������ɸ�Сϵͳ����ɵġ�����
���������ϵͳ����ϵͳ��Ĺ�ϵ���в��(layer)���ָ�(partition)��
5.1.1 ���(Layer)
�������в����ϵ�Ĵ���ģ�飬�������ǣ���ģ���ṩ��ģ������Ĺ��ܣ���ģ
�鲢����֪����ģ������ʲ�ᣬ�������ϲ�ģ�顣��ˣ�����Ĺ����ǡ���
ֱ������ϵ�����ʽ�Ĺ�ϵ���Խ��ͻ���������(machine dependence),��Ϊֻ
����ײ�ģ����衸ʵ�廯�����в����ϵ�ģ�������Ĺ����������dz���ġ���
��Ϊ��Ҫ��Ӧ�µĻ�����ֻҪ�黻�ײ��ģ��Ϳ����ˡ�
5.1.2 �ָ�(partition)
�����ָ��ʾ˵��ģ���ģ�����ϵ��ˮƽ����ġ�ģ��������ĺ��С���
�����ṹͨ����������ϵͳ�м������ĺ��С��ָ����ṹͨ������
����ϵͳ�У�Ҳû������뻵�����⣬��ϵͳ�������Ҫ��
5.2 ������Դ(resource)
�����ŵ�өĻ��ʾ�������塢���̡�ӡ���ȶ���ϵͳ��Դ������ϵͳ���ϵ�
������붼����ҵϵͳ�ѹء�����Ӧ�ó�ʽҲ��Ӧ�����ó�ʽ�ڵĴ�ϵͳ����ʹ
�ù�����Դ����õ�������������ƶԵ����Դ�İѹ��������ʹ��������
����Դ���ɴ����ͳ�����Դ�Ĺ��?����˵�����ij�����������һ�����
������һЩ����.....����Ȼ���ܻ�Դ�ȡ�ٶȻ�Ч���е�Ӱ�죬����Ҳ�Ǽ���
��һ�����ȴ������һ�µķ�ʽ��������Դ��
�����¡�������(Object Design)
����������(Object Design)�Ĺ����ǹ滮����������һ��������������
���ǵð�ģ�;��廯����ѻ�������ʵ����
6.1 ���㷨(Algorithms)���
�������㷨����Ҫ�����ɱ���ġ�һ���õ����㷨�����죬������Ч�ʡ��뿴
�������ʽ f(x)=10*x^250-20*X^249+1�� f(2)=? �ţ��ܼ���2���ȥ�㣬
Ȼ��һ���ᷢ��磬��Ϊ250�η�ʵ��̫���ˣ�û���㡣����д��f(x) =
(10x-20)*x^249+1 ���ͺܺ�����������һ����ѧ���㷨�����ӡ����ȥѡ��
һ���ʵ������㷨�أ��ϸ�˵����㽫ǣ�浽���㷨��������Ҫ���ô�������ѧ
���㣬���µ�д��һ���ܺ���顣��������幤�̵Ĺ۵������ͱȽϼ�ֱ��
�ˡ����λ����һЩҪ�㣺ѡ����Щ���϶���û�����۵����㷨������ͨ������
Ч�ġ���������Լ�������㷨����һ�������뿼�ǡ�������㷨����Ҫ������
�ؼ�ƿ���ϵģ���������ĵġ�
����Ϊ��ʵ�����㷨��Ҳͬʱ��ѡ����ʵ����Ͻṹ����Ȼ�о�̬�����Ͻṹ��
��̬�����㷨�����ǿ���������һЩ�ڲ����(internal class)��Ӧ��ʵ������
�������ڴݵ���������ʽ���Զ��������Ͻṹ����������Լ�ȥ�������
���㷨���鷳���������ʦ�ĸ�����
6.2 ����(association)�����
�������Ǻ���ܾö�û�������ΰ�������ˡ��������ἰ�����������Ǻ���Ҫ
�ģ�������ʵ�������أ����������Թ�����;�ķ�����������
6.2.1 �������(One Way Association)
�����ü���ǰ����������ʦ��ͬѧ���Ľ�����ϵ��˵�����������͡��̵�
������������������ǵ����Ե�����ʦ��ѧ���û��ѧ��̵�����ʦ������
������ʵ��ͨ����ָ���ɡ���������һ��һ(one-to-one)�ģ�����һ��ָ��
�Ϳ��Խ�����������һ�Զ�(one-to-mamy)�������Ҫ��һ��ָ�꣬��һ��ָ
��ı��������ϵ�����������ƣ���һ��Ҫ��һ������Ȩ��ֵ
(qualificiation)�ı���������ˡ�
6.2.2��˫�������(Two-way association)
������һЩ����£�˫��������б�Ҫ�ġ����ȥ�ķ���ʹ���ʴ�춷����ʹ��
�ʣ�����͵������һ����һ��ָ�����������㹻�ˣ�����Ҫ�÷����ϵʱ��
����Ѱ�ķ������ҵ�����ָ�����Դ����������ȥ˫��ʹ��Ƶ�ʶ���࣬��
�����˫ָ�ꡣ�ڸ��ӵ�����У�������������Ĺ�ϵ���Ƕ�Զ�Ĺ���֮���
���ñ�����Ҫ����������һ����������ϣ������Ҳ��һ��������Щ��
�͵ı�ɿ������Ӵձ�(hash table)��ʵ����
6.2.3����������ѻ�(Optimization)
�������ǡ����ģ�͡���������������������Ǻ���������ܣ����ҷ����
ʵ�ġ����������̫�����ˡ�Ϊ�˴���һ���¼�������Ҫ����������������
����ϵ(association)���ݡ��ͺ����̨�������ۣ������ʡ�����þ����ٸ�
����������֧�߲��ܵ���Ŀ�ĵأ���������ٹ�·���Ϳ���ֱ����ۡ�
ͬ��ģ������ϴ���Ƶ�ʸߵ�����䣬��ʹ�˴�û��ֱ�ӹ�����Ҳ���Կ����ر�
����һ����ϵ(association)�������ѻ����ϴ���·����Ŀ�ģ���ȥ������
����Ҫ���߳����衣
6.3���Ŵ�(Inheritance)������
�������������ص����������Ŵ��ԣ�����ϣ�������е�����ܹ������ܵ���
��ʹ�ã��̳о�������Դ�������������Ƶ�ʱ�估���߿��Ŷȡ�
��������е�һЩ����(operation)���ܺ;ɵ��������ͬϵͳ�����Ƶ������
�����������Ĺ��ܣ�����������ȴ����һЩ������Ϊ������ܻᵼ����
�Ŵ����������ʵ�ڵĺܿ�ϧ������β����������������㡹���ŵIJ����أ�
������һ�������⡣�������Ӷ��ŵIJ������ǵ�ǩ����ܾͿ���ȫһ���ˣ�
����˵�ڵ�ɫ��ͼϵͳ�ϻ��㣬ֻ��Ҫ�������ϼ��ɣ����ڲ�ɫϵͳ��ȴ��Ҫ
����ɫ(color)�IJ�����δ�ɹ����أ�ֻ���ڵ�ɫ����ĺ����ж��һ����
��Ҫ���ɺ��Ե���ɫ����������ԭ��������ͬ������(operation)�����ǩ��
(signature)��ͬ�����ڲ�����(method)��ͬ��ͬһ��������
���������Ŵ���������⣬�½������Ҳ�����뷨�������Ŵ�������Ϊ�����Ƶ�
����й�ͬ�����������ԡ����ǽ���Щ��ͬ�����������Գ������Ϊһ����
ͬ�ij�����𡣵���춸��������в����ԣ���ijЩ���������dz���ģ���Ǻ�
��������ͳ��˳�������ˡ�
�����������в��ٺô�����һ�����乲ͬ�ĸ����Ϳ���Ӱ�쵽���е������
���ڶ������Բ���ͬ�����������Ӧ��ͬ�Ļ��������ǰ�ߣ�������Ϊ��dz��
����������ۣ�����Ӧ�ÿ����˽⣻����Ҫ����һ�µڶ��㡣����������幫˾
����ͬһ�����������в�ͬ����Ŀͻ�������������ɾ��ij�ʽ��ֻҪ�Ŵ�
�µ�����ɡ���Σ���һ����ͼϵͳ�Ļ�ͼ�����ԣ�Ϊ����Ӧ��ͬ����ʾ
ϵͳ�������Ŵ���Ӧ��ͬ����������������ϻ�ִ��ʱ��������ʵ���������
�������Ϳ����ˡ�
6.4����Ѷ����(lnformation Hiding)
������ǰ���½��У�����û�ᵽ��Ѷ����(lnformation Hiding),Ҳ���������
��װ��(encapsulation)����װ�Ժ����ϱ�ȫ(security)���ܻ�Ϊһ̸������ָ
����ϵͳ���ϵı��ܺͰ�ȫ�Ŀɿ��ԣ�ǰ����������幤���ϵ����塣��Ѷ����
��Ŀ���ж�����һ��ʹ����(operation)���ȵĴ�ȡ���ϳ�Ա�����������
�����á�Ҳ����˵�����Dz�ϣ��������ǣһ����ȫ�?������������ķ���
(method)ʱ����Ԥ�ڵĽ�������ṹ��Ӱ�졣�ڶ�����ʹ������뽨��һ��ͳһ
�Ľ���(interface)�����������ȡ��ı�������ԣ�������Ч�ض�ֹ�����
��������ƻ�������Ҫ���ǣ����������������ij��̶ȣ�һ�������
����������������Ҫ����ȥ�����������Щ���Ժ���Ϊ�ñ������أ�˵ʵ��
������Ҳ�����˺ܾá�һ������Ŀ���������ģ��������Ľ�����¶��������
�������Ԫ������������������������һ�����⣺�������ȥ���һ���õĽ�
�棿������Ŀ�кõĽ����Ǹ߶ȳ���ģ��������ڲ��ṹ�����棬�ܹ����ǵ���
�����������Կ����ø����Ľ��棬���Ҳ���Ҫ�κ���ɾ�ģ���ͬʱҲ����
�����ӵؿ�������Ķ�����
6.5�����ģ�黯
������ͳ��������ƺ�����ģ�黯������������幤��ͬ��Ҳʮ������ģ�黯��
ģ����������岢����ͬ��������Ϊģ��Ľ綨��춡�����ģ�͡��ġ����У�
Ҳ����˵��������ϵ�������Ƶ�����ģ�黯��������γ�ģ���أ�ģ����ִ�
��ʲ���ϵ�أ����������ԡ������ԡ����ж�ģ���ڳ�Ա�Ĺ�ϵ�����ԡ�������
��������ģ����ģ��֮��Ľ������á�����������һ��Ŀ��Ա����õ����ķ�
����ģ�������ǽ����Եͣ�������ζ����ģ�黹�����ٱ��зֳɸ�С����ģ�顣
ͬ��ģ���������ǽ��ܶȵͣ��������������Ҳ�Ǵ����ͳ�����ģ��֮
���������Թ�ߣ�Ӧ�ÿ���ģ��ķָ��ʽ�Ƿ�����ͬ��ĵ������õ�����
������������ˡ����ģ��Ľ����Լ������Ե���ϸ���ݣ���ο����ڽ��ࡣ
�����¡�ʵ��������
7.1����������ʽ����(Object Oriented Programming Language)
�������ɷ��ϵģ�����������(OOD)����������ʽ���Ե������̶ȼ��ߣ���
��������Ƶĸ������ߡ����ͳ����ˣ���ȴ���ڰˡ������������ʽ���Է�
չ����֮��Ŵ����ʡ���ͳ�ij�ʽ���Բ��Dz���Ӧ�����������ֻ�Ǻ���
���ˣ������Ŵ� (inheritance) �ͺ���ʵ������˵������������ר�õij�ʽ
���ԡ�����������ʽ���Բ���һϦ��ɵġ��ӳ�ʽ���Եķ�չ��ʷ�У����Կ�
��һ���������������һ������Եķ��ʽ�����е�һ����Ĵ�֮��ͬ��
�������ڴ˲�ȡ������̬�Ĺ۵�������ʽ���Ե��ݽ���ɳ�һЩ����Ϲŵ�
��ʽ���ԣ���������ԣ�û�н��������������ϱ�ʾ�����йŵij�ʽ����
�� FORTRAN��BASIC ���л��������̬���������ִ���̬�ȵȣ����ij�ʽ
������û�Pascal����߱��С����ϡ�ʽ�����ϱ�ʾ��������һ��ij�ʽ������
Smalltalk ��C++���������װ�ı�ʾ��ʽ��
��һ���������������ʽ����(OOPL)�ܹ�ȷʵ�Ľ�����Ķ�����(Domain)ӳ��
����ʽ�С����仰˵����ǰ�������������ĸ���������Զ�Ӧ�ñ����OOPL��
�ܲ��ҵأ��������Զ����ܺ��걸�ذ���Щ���ԡ�����˵�����ؼ̳�
(multiple inheritance)��������춽Ͼɵ�OOPL�У�����C++ 1.2�ȡ����춶���
�̳�(multiple inheritance)���ģ������ (ambiguity) �ķ���Ҳ������ͬ��
���⣬����ϣ���ʽ�����ܹ��ṩһ�ױ�������ʽ��(Class library)����
��Smalltalkһ�����ʦ�������������ϰٸ��Ѷ�����������C++��������
iostream��I/O������������������ʽ���Զ����������ڹ�Ͷ�����
ͬ�������������������������е�ϸ�ڿ�������һ�������߲��ɲ�ע�⡣
��������ĿǰOOPL���������ķ��������ڳ�ʽд��ʱ�ڳ�ʽ���������Ŵ���ʽ
����������ܻ������ִ��ʱ��(run-time)�ɲ�������ij�ʽ���ԡ���ʱ�൱��
������Ҳ��һ�������
�ڰ��¡����C++
������ȻSmalltalk����ʷ��������ܶ����ñ�C++��C++�������Խ�ǿ����
�C++�Ľ������Ƕ����֮�꣬������Ȥ�Ķ������вο����ڱ����н�̽��C++
���������е�Ӧ�á�
8.1�������Vs�����
������Ҫ��Ϊ��ڵ���Ƹ���ˡ�C++�е���������ģ�� ( object model )��
�������ɶ�����أ��ͳ��IJ�ζ��ԣ����ߵ���������ȵġ���ʵ�������
˵��C++�����ij�Ա��ȡ���Կɷ�Ϊ����(public)������(protected)��˽��
(private)�����ڲ������Ŵ��������£�����(protected)��˽��(private)��
����������б����صIJ��֡���ֻ����Ŵ�ʱ��public��protected�����Ŵ���
�����Ϊʲ��Ҫ�������أ����Ǹ�����Ȥ�����⡣��ݱ��ߵ��о���
private��Ա��ʵ��һ��Ҳ�ᱻ�Ŵ�������𣬵����ܱ������ij�Ա��ȡ����
���һ�����Ե��Ŵ�(implicit inheritance ) ��������һ���Ƕ�������private
��Ա���Ա����ɸ������ʱ�Գ�Ա��������Ϊ��Ҫ���ij������(operation)��
�ķ���(method)������Ҫ���ڲ����(internal class)�������ģ�顣��Щ��
Ա���Ŵ��������壬Ҳ�ͳ��������Ŵ���
8.2 ��Խ(overriding)���������(overloading)
������Խ���������������ǡǡ�෴����Խ��ǰ����½ھ�̸���ˣ���˼������
�������ȡ����������ڲ��ķ����������ʺ��������·������������
��(overloading)�ֱ���Ϊ����Ƶ��ظ�ʹ�á�����������������ģ�����ABC
�������������������ABC(int)��ABC(char)��Ҳ����˵�������ͬ�ģ������
��һ����ǩ��(signature)��ͬ���ں���ABC����ʱ�������е���ʽ��
ABC('A')����������ԪA���ͺ�ABC(char)��ǩ����ͬ����ʱ������ABC(char)��
������ֻ�Ǻ�����������Ҳ�ɶ������롣������������һ�����Ե���
�ӣ�ʵ��ļӷ��DZ�����ͼ�����ӣ��������ȴ��ʵ����ʵ�����鲿���鲿
����ȴ���Թ�ͬʹ�üӺ�Ϊ��?ͬ�ļӷ����㡣
8.3 ���⺯��(virtual functions)��������(abstract class)
������춳������(abstract class)�ڡ������ơ�һ���У����ἰ�������
��������н�����C++����α�ʾһ���������
�������⺯��Ĵ���Ϊ����Ҫ�����ú����ִ���������������壬�������Ѷ�
�壬����ȴ���ܻᱻ�ı䡣�����ģ��һ���У������һ�����λ�ͼ�����ӡ���
�е�ͼ�Σ���ͼ���ߣ��������Ȼ�ͼ������һ����ԭʼ�ĸ����Ҳ���ǡ�
ͼ�Ρ�����ڡ�ͼ���������������(operation)�С���ͼ(draw)������Ŀ��
������ͼ��Ļ���ȴ�в�࣬��ˡ���ͼ�����������ڡ�ͼ�Ρ�����д��ڣ���
ȴû��������Ķ�������ֻ�����Ŵ��Ӵ�Ҳ������Щͼ������в��ܶ��壬
����������ͼ��������Ǹ����⺯������һ������������ģ��ٶ��и�����
���Ρ���𣬶������ͼ(draw)������������Ȼû���⡣���ڼ����Ŵ�������
���Ρ����������ǿ������¶��塸��ͼ��������������������ͼ��������
һ�����⺯������ǰ�ߵ����Σ�����Ѹú�����Ϊ��������(pure
function)��д����virtual ABC (void)=0�������������һ�������ʹ������
�����dz�����𡣵�����������������㲻���dz��������Ϊ���������
��������(instance)��ֻ�������Ŵ��������
8.4 �(Template)
����ģ��(template)��AT&T C++ 2.1�¶���Ĺ��ܡ���������������۵���û
����ϵ�������ڼ����ظ�������ȴʡȥ���ʦ��������
�����뿴������ӣ��ѵ�(Stack)��һ���Ƚ����(FILO)�����Ͻṹ�������е�
�ѵ�û���������ƣ����⣬����������ѵ�������֮��̬�����������
��������ʵ��״��������һ���¡���2.0��ǰ��C++�У�����Զ�������push
�����룩�����������д���������£���Ϊ����ķ�ʽ��һ��ֻ�������̬
��ͬ����Ҫ�ظ�д�ܶ༫���ƵĶ������뺯���������template���Ϳ����ɱ�
�����Զ��������Ƶĺ������8.1��ʾ����ˣ���ʵ��Ҳ��ˣ�������ֻ�ǰ�
���ģ��������Ϊһ��չ����(MACRO)��ָ����ѡ�
8.5 Ԥ�����ֵ
����Ԥ�����ֵ��C++ �����ӵĹ��ܡ�ǰ�������ɫ���ɫ��ͼϵͳ�л�����
����һ�»�ʱ�����ĸı䡣����˵��point(int x, int y, int color=1)�����
ͼ�����ǩ������ʽ�ú��е�ɫ���ķ���������������������ֻ����
���ֵ���ѣ�������ܲ�֪��ϵͳ��춲�ɫģʾ�£���ʱ��ɫcolor�����Ԥ
��ֵ�������ó��ˡ����⣬��Ԥ��ֵ�IJ�����ñ����ڲ����е�����ͷ������Ԥ
�����ֵ���ܷ�����ȷ��Ч�á�
8.6 ��Ҫ
�������C++�����������ƽ��йص��ص㣬�ͽ��ܵ���ߡ�������C++���鲻
�٣���������вο���
������������Щ��ϵC++����Ȥ�����������ͬ����������ۡ���һ�����
�£�ָ��(assign)����ֵ�Ǻܼ��£�����X=3�ȵȣ�������ָ���أ�һ��
�dz���������ǣ��ظ����롱������������ӣ���A=Bʱ�㽫B���������еij�
Աһ��һ���ᵽA�����С������������������أ���C++ 1.2�У���������һ��һ
��byte������ȥ����C++ 2.0���Dz�ǰ�����ᣬ��ο�����Ա�ķ�ʽ�����仰˵
����������͵͵�ء������Ƕ��������ˡ�������������ӡ�1.2��2.0����������
��ͬ��Ϊʲ��2.0Ҫ���أ����������������������ۡ�
������һ����Ȥ�������ǹ�춱��������?C++����û�ж�����������Ҫ����C++
��������һ����ǰ�˴���������C++�ij�ʽ��ת���ɣõ�ԭʼ�룬�ٽ��ɣõı�
�������б���Ĺ�������������Ȥ�����ԭ������ΪC++����ɱ���Ϊ������
�ľ�ָ��(MACRO)��ǿ�档����ǰ�����ᵽ��template����һ�����Ե����ӡ�
����ת��class������ǰ�˴�����Ҳֻ�ǽ������İ���ת�ɡ�Ψһ��ơ��Ľ�
��(struct)���ѡ�����Ȥ�Ķ��߿����Լ����һ��ת������Ӧ�ò���̫�ѡ�
�ھ��� ��ʽд���ķ��
����һ��õij�ʽ�����Գ�ʽЧ�ʵ�Ӱ����Ȼ��С�������������?��
��ά������˵ȴ����Ҫ����Ϊ��ʽ�벻����ֻ��Ҫ�����ִ�ж��ѣ�ͬ��Ҳ��
���ǿɶ��ġ�����˽�ġ�����˵ע��Ӧ��д���ף���ʽ������������ȵ�
����Щԭ�����Ų������κν̿�����DZ�����ǰ�������ж���ֻһ�ε�ǿ����
���ڱ����б��߲�Ҫ�ص���Щ�ߵ������������һ�����õġ�������������
Դ��Borland��˾������TURBO C++/BORLAND C++�е�CLASSLIB������ʽ�⡣Ϊ
ʲ��Ҫ��CLASSLIBΪ���أ����߲�û����ҵ��ͼ����������Ϊ������ȷ��ע�⡢
��ȷ�����õ������Ŵ��ȵ����ʡ����׳�ʽ��Ĺ������ṩһ�ױ��������Ͻ�
�����������ʦ�����а�STACK�ѵ���QUEUE���С�ARRAY���С�HASHTABLE��
�ձ?STRING�ִ�......�ȵ�������¾����е��ִ�����������ǵġ���ϣ��
��λ�������µ�˵���У�ѧϰһ�õ������Ƶķ��
9.1 String ���Ľṹ
������ȻString�ִ������һ�����Ͻṹʵ������𣬶�ֻ��һ����ǿ������
��̬����ΪC++ �����ڽ��ִ����ͱ𣩣��������������ý��������Ա�����
��������ۡ�String�������Sortable����Ŵ�������Sortable��ߵ�������
�ܲ����ۣ���ΪSortableҲ�����Լ��Ĺ��ã���String���������ܷ��Ҫ��
�ȷ������£�
class String: public Sortable
{
public: // ������Ҳ����String���Ľ��沿��
String( const char * );
String( const String& );
// �������뽨����
virtual ~String();
virtual int isEqual( const Object& ) const;
virtual int isLessThan( const Object& ) const;
// ���������������������Ƚ����ִ���С����ͬ
virtual classType isA() const;
virtual char *nameOf() const;
virtual hashValueType hashValue() const;
virtual void printOn( ostream& ) const;
String& operator =( const String& );
operator const char *() const;
private: // ˽����String������ܱ������������ڲ�����
sizeType len;
// ��¼�ִ��ij���
char *theString;
// �ִ������ݱ����������Ԫָ����
};
��9.1 String������������б�
9.1.1 �������ƻ���Ա (Constructor and Destructor)
����String�Ľ�����Ա�Ƕ�������ģ���Ϊ��String�İ������ʱ��Ҳ����һ��
�ִ�����ʼ����������ʱ��Ӧ��Ҫָ��һ�������ִ�����������λ���ɴ�
�˽�һ�㣬����˵����Ҫ�ر�дһ��ר��������ʼ����ij�Ա���������ڴ˴�
String������ȷ�÷��ǣ�
String NewString ( "Hello C++" );
���Ҫ�����ε���ʼ���������ʧȥ�����ߵ������ˣ�����
String NewString ;
NewString.init ( "Hello C++" ); // String.init �DZ�����ij�Ա����
���ᣬΪʲ�Ὠ�����������������뺯���أ��������˵���У�String�������
ʼ����ֱ��ָ��һ���ִ���NewString�����������ֱ�۵��÷�����������һ��
���������Ҳ��ָ��һ���Ѿ����ڵ�String������������Ҫ����һ��������
�ˡ��dz�����ʲ�����أ���˵��������ϵͳҪ��һ��ռ��������ִ�������
������������ʱ�ᣬ���Ҫ���ظ�ϵͳ����Ȼ������Լ����һ�����춸ղ�
�ٶ���init����Ҳ���ԣ���������Զ���ʰ���Ǹ���𣿴���һС�����ǿ�����
��������һ�����ʱ��Ӧ�����ý���������ߡ�
9.1.2 ��յ��ڲ��ṹ�뿪�ŵĽ���
����String�ڲ������������ӵ��أ���˽�������洢������������һ�������
�������ִ����ϵij��ȣ���һ����Ԫָ����ָ����������������ִ����ݵ�
����ռ䡣�������������ˣ������ִ����Ϸ���˽�����ڣ������Dz�����
��ȡ�ִ����������ǵģ���ȷ��ˣ����뿴String�Ĺ�����Ҳ����������
���ݣ���������Ҫ�ij�Ա��һ���Ƕ�������������"="����һ���dz�Ա����
printON()����������������"="��������ָ����һ���ִ������ֵ��������A=B
���ַ�ʽ���������Ը���ִ������ݣ�printON()��Ա��������Խ��ִ�����
�������ָ����������(stream)�ϣ���˾Ϳ���ȡ���ִ������ݡ���Ϊʲ���
��Ԫָ��ֱ�ӷ��ڹ������أ�����DZ�С�����۵��ص㡣������֮ǰ���ᵽ����
Ѷ���ص����⣬�ڴ�����һ���ܺõġ�����ڹ�͡���Ϊ����ϣ���������ĵĺ�
����dz����ܹ�����ĸı���������ԣ���Ϊ������û�������õı������Ǻ�
�����ĵġ���String���и������Ǽ�¼�ִ������õģ�����ֻ�Ǹı��ִ�����
�������Ѷû��������µĻ����Dz��ǻ���������أ����Һ����Եģ���Ա��
�����ױ��ƻ�������������������ȡ����Ҳ����ͬʱ�������ϡ�Χ������
�и��������������(cast)������������������أ�����������String�����ָ
��ת������Ԫָ�꣬����ʵ����ת��������Ԫָ��ʵ������ָ��String����д�
����Ԫ���ϵĴ���ռ䣬�������˵���ð������ҾͿ����Լ�ֱ�����ִ�����
�ˣ��ǵ�����ԣ���������ע����ȴ����˵��ò�Ҫ������ִ����ݣ������
��ܵı����ֻ����ȡ�����õġ���Ȼ��String�Ľ�����ܻ����Ǻ���ȫ����
��Ҳ�ṩ�����ʦһ���ܴ�ķ�չ�ռ䡣
9.2 ע���ʹ��
����CLASSLIBע���ʹ�����Ҽ�������ӵ�һ�֡������ע�⽫��ʽ�����Ե���
����������ʹ��ע��Ĺ��������ʾ����ֵ�ö��߲ο���
��ͷ������(header files)
// Content ---------------------------------------------
// ����������������ģ���ں�����Щ������𡢱���ṹ�ȵ�
// Description
// ���ģ�����Ҫ���ܸ���
// End --------------------------------------------------
// Interface Dependencies ------------------------------
// ���(#include)����ģ���ԭʼ��
��
--
* Origin: NJU PowerBBS <bbs.nju.edu.cn>
Thread Navigation
This is a paginated view of messages in the thread with full content displayed inline.
Messages are displayed in chronological order, with the original post highlighted in green.
Use pagination controls to navigate through all messages in large threads.
Back to All Threads