Department Of: Computer Science and Engineering
Department Of: Computer Science and Engineering
Hojat ahmadian
Department of
Computer Science and Engineering
Permission is granted to copy, distribute, and/or modify this document under the name of
author.
I
This text is very brief overview to the java programming language developed by
sun Microsystems. In this section I haven’t any extra time to prepare all of
things about java that exist in English version of this document. English version
is written by cooperation my friends so that not free for anyone and anywhere.
Because of many problems like shortage time this text is still incomplete, but I
attempted include most important topics that any student at undergraduate level
of computer engineering and correlate fields will wants. This short dissertation
comprises many modern subjects in programming languages without more
examples that may be confusing student.
Therefore, this text embraced many above characteristics and most importance
topics in object oriented programming that implemented by java like: parameter
passing, object and classes, references types, class members, constructors,
accessors and mutators, member access control, inner classes, inheritance and
polymorphism, derivation, interfaces, abstract methods and abstract classes,
method resolution, concrete classes in contrast with abstract classes, algorithm
abstraction, multiple inheritance, run time type information and casts, and
exceptions.
At the end I know my duty to thanks many students and professors at the Tehran
universities that help us for develop our book, thankful for your managing. The
name of these sweethearts incoming at the main version of this book and don’t
included here.
II
Reference
1- David Schmidt.
Programming Principles in Java: Architecture and Interfaces.
Computer and Information Science Department – Kansas State University,
January 2003 Edition.
5- Bruno R. Preiss.
Data Structures and Algorithms, Object-Oriented Design Patterns in Java.
Electrical and Computer Engineering Department,
University of Waterloo, Canada.
III
IV
This Textbook is dedicated to my colleagues and students
at the Department of Electrical and Computer,
Faculty of Engineering.
I love all of you with the whole essence and superlative my enthusiasm.
V
VI
ﭘﯿﺸﮕﻔﺘﺎر
زﺑ ﺎن ﺑﺮﻧﺎﻣ ﮫ ﺳ ﺎزی ﺟ ﺎوا ﯾ ﮏ زﺑ ﺎن ﺷ ﯽ ﮔ ﺮای ھﻤ ﮫ ﻣﻨﻈ ﻮره ﻣﯿﺒﺎﺷ ﺪ ﮐ ﮫ در ﻃﺒﻘ ﮫ زﺑﺎﻧﮭ ﺎی ھﻤﺰﻣ ﺎن
) (concurrentﻗ ﺮار ﻣﯿﮕﯿ ﺮد .ﻧﺤ ﻮ زﺑ ﺎن ﺟ ﺎوا ﺷ ﺒﯿﮫ ﺑ ﮫ c++ﻣﯿﺒﺎﺷ ﺪ ،اﻣ ﺎ ﺑﺴ ﯿﺎری از وﯾﮋﮔﯿﮭ ﺎ ﮐ ﮫ c++را ﭘﯿﭽﯿ ﺪه،
ﻣﻐﺸ ﻮش و ﻧ ﺎ اﻣ ﻦ ﻣﯿﺴ ﺎزد را ﺣ ﺬف ﻧﻤ ﻮده اﺳ ﺖ .ﭘﻼﺗﻔ ﺮم ﺟ ﺎوا اﺳﺎﺳ ﺎ ﺟﮭ ﺖ ﺗﻮﺳ ﻌﮫ ﻧ ﺮم اﻓﺰارھ ﺎی ﻣﺒﺘﻨ ﯽ ﺑ ﺮ ﺷ ﺒﮑﮫ
ﻃﺮاﺣ ﯽ ﺷ ﺪ .ﺟ ﺎوا ﻃﺮاﺣ ﯽ ﺷ ﺪ ﺗ ﺎ از ﻣﯿﺰﺑ ﺎﻧﯽ ﻣﻌﻤ ﺎری ھ ﺎی ﭼﻨﺪﮔﺎﻧ ﮫ ﺣﻤﺎﯾ ﺖ ﮐﻨ ﺪ و ﭘﺸ ﺘﯿﺒﺎﻧﯽ اﻣ ﻦ ﺑ ﺮای ﺗﺤﻮﯾ ﻞ
اﺟ ﺰاء ﻧ ﺮم اﻓ ﺰاری ﺑﺎﺷ ﺪ .ﺑ ﺮای ﺗ ﺎﻣﯿﻦ اﯾ ﻦ ﻧﯿﺎزھ ﺎ ﮐ ﺪ ﮐﺎﻣﭙﺎﯾ ﻞ ﺷ ﺪه ﻣﯿﺒﺎﯾﺴ ﺖ در ﺣ ﯿﻦ اﻧﺘﻘ ﺎﻻت در ﺷ ﺒﮑﮫ زﻧ ﺪه ﺑﻤﺎﻧ ﺪ،
ﺑﺮ روی ھﺮ ﮐﻼﯾﻨﺘﯽ ﻋﻤﻞ ﮐﻨﺪ و ﻣﺸﺘﺮی را ﻣﺘﻘﺎﻋﺪ ﮐﻨﺪ ﮐﮫ در ﻧﮭﺎﯾﺖ اﻣﻨﯿﺖ اﺟﺮا ﻣﯿﺸﻮد.
ﮔﺴ ﺘﺮدﮔﯽ و ﻣﺤﺒﻮﺑﯿ ﺖ وب ﺟﮭ ﺎﻧﯽ اﯾ ﻦ وﯾﮋﮔﯿﮭ ﺎ را ارزﺷ ﻤﻨﺘﺮ ﺳ ﺎﺧﺖ .اﯾﻨﺘﺮﻧ ﺖ ﺛﺎﺑ ﺖ ﮐ ﺮد ﮐ ﮫ ﭼﮕﻮﻧ ﮫ ﯾ ﮏ رﺳ ﺎﻧﮫ
ﻏﻨ ﯽ ﺑ ﺎ ﻇﺮﻓﯿﺘ ﯽ ﺷ ﮕﺮف ﻣﯿﺘﻮاﻧ ﺪ ﺑ ﮫ راﺣﺘ ﯽ در دﺳ ﺘﺮس ﻗ ﺮار ﮔﯿ ﺮد .ﻣﺮورﮔﺮھ ﺎی وب ﻣﯿﻠﻮﻧﮭ ﺎ ﮐ ﺎرﺑﺮ را ﻗ ﺎدر
ﻣﯿﺴ ﺎزﻧﺪ ﮐ ﮫ در اﯾﻨﺘﺮﻧ ﺖ ﺳ ﻔﺮ ﮐﻨﻨ ﺪ ﺗ ﺎ آﻧﺠﺎﮐ ﮫ ﭼ ﺮﺧﺶ در وب ﺑﺨ ﺶ ﻣﺘ ﺪاوﻟﯽ از ﻓﺮھﻨ ﮓ ﺟﻮاﻣ ﻊ ﺷ ﺪه اﺳ ﺖ .زﺑ ﺎن
ﺑﺮﻧﺎﻣ ﮫ ﻧﻮﯾﺴ ﯽ ﺟ ﺎوا ﺑ ﮫ ﮔﻮﻧ ﮫ ای ﻃﺮاﺣ ﯽ ﺷ ﺪ ﮐ ﮫ ﺗ ﺎ ﺣ ﺪ اﻣﮑ ﺎن واﺑﺴ ﺘﮫ ﺑ ﮫ ﯾ ﮏ ﭘﯿ ﺎده ﺳ ﺎزی ﺧ ﺎص ﻧﺒﺎﺷ ﺪ ،ﺟ ﺎوا
ﺗﻮﺳ ﻌﮫ دھﻨ ﺪﮔﺎن ﺑﺮﻧﺎﻣ ﮫ ھ ﺎی ﮐ ﺎرﺑﺮدی را ﻗ ﺎدر ﻣﯿﺴ ﺎزد ﺗ ﺎ ﯾﮑﺒ ﺎر ﺑﺮﻧﺎﻣ ﮫ ﺑﻨﻮﯾﺴ ﻨﺪ و ﺑﺎرھ ﺎ در ﻓﻀ ﺎی اﯾﻨﺘﺮﻧ ﺖ آﻧ ﺮا
اﺟﺮا ﮐﻨﻨﺪ.
زﺑ ﺎن ﺑﺮﻧﺎﻣ ﮫ ﺳ ﺎزی ﺟ ﺎوا از ﻟﺤ ﺎظ ﻧ ﻮع ﺑﺴ ﯿﺎر ﭘ ﺮ ﻗ ﺪرت ﻣﯿﺒﺎﺷ ﺪ .اﯾ ﻦ ﻣﺸﺨﺼ ﮫ آﺷ ﮑﺎرا ﺑﺎﻋ ﺚ ﺗﻤ ﺎﯾﺰ ﻣ ﺎﺑﯿﻦ ﺧﻄﺎھ ﺎی
زﻣ ﺎن ﮐﺎﻣﭙﺎﯾ ﻞ ﮐ ﮫ ﻣﯿﺒﺎﯾﺴ ﺖ در زﻣ ﺎن ﮐﺎﻣﭙﺎﯾ ﻞ ﮐﺸ ﻒ ﺷ ﻮﻧﺪ و ﺧﻄﺎھ ﺎی زﻣ ﺎن اﺟ ﺮا ﻣﯿﺸ ﻮد .زﻣ ﺎن ﮐﺎﻣﭙﺎﯾ ﻞ ﺷ ﺎﻣﻞ
ﺗﺮﺟﻤ ﮫ ﺑﺮﻧﺎﻣ ﮫ ھ ﺎ در ﻏﺎﻟ ﺐ ﺑﺎﯾ ﺖ ﮐ ﺪ ﻣﺴ ﺘﻘﻞ از ﻣﺎﺷ ﯿﻦ ﻣﯿﺒﺎﺷ ﺪ .در ﺣﺎﻟﯿﮑ ﮫ ﻓﻌﺎﻟﯿﺘﮭ ﺎی زﻣ ﺎن اﺟ ﺮا ﺷ ﺎﻣﻞ ﺑﺎرﮔ ﺬاری
و ﺗﺮﮐﯿ ﺐ ﮐﻼﺳ ﮭﺎی ﻣ ﻮرد ﻧﯿ ﺎز ﺟﮭ ﺖ اﺟ ﺮای ﯾ ﮏ ﺑﺮﻧﺎﻣ ﮫ ،ﺗﻮﻟﯿ ﺪ ﮐ ﺪ ﻣﺎﺷ ﯿﻦ اﻧﺘﺨ ﺎﺑﯽ ،ﺑﮭﯿﻨ ﮫ ﺳ ﺎزی دﯾﻨ ﺎﻣﯿﮑﯽ ﺑﺮﻧﺎﻣ ﮫ
و اﺟﺮا ﺑﺮﻧﺎﻣﮫ واﻗﻌﯽ ﻣﯿﺒﺎﺷﺪ.
زﺑ ﺎن ﺑﺮﻧﺎﻣ ﮫ ﺳ ﺎزی ﺟ ﺎوا ﻧﺴ ﺒﺘﺎ ﺳ ﻄﺢ ﺑﺎﻻﺳ ﺖ ،زﯾ ﺮا ﮐ ﮫ ﺟﺰﻋﯿ ﺎت ﻧﻤ ﺎﯾﺶ ﻣﺎﺷ ﯿﻨﯽ در ﺳ ﻄﺢ زﺑ ﺎن ﻗﺎﺑ ﻞ دﺳ ﺘﺮس
ﻧﯿﺴ ﺖ .ﺟ ﺎوا ﺑ ﮫ ﺻ ﻮرت اﺗﻮﻣﺎﺗﯿ ﮏ ﻓﻀ ﺎی ذﺧﯿ ﺮه ﺳ ﺎزی را ﻣ ﺪﯾﺮﯾﺖ ﻣﯿﮑﻨ ﺪ ،ﺑ ﺮای ﺟﻠ ﻮﮔﯿﺮی از رﺧ ﺪاد ﻣﺸ ﮑﻼت
اﻣﻨﯿﺘ ﯽ آزادﺳ ﺎزی ﺣﺎﻓﻈ ﮫ ﺑ ﮫ ﺻ ﻮرت ﺻ ﺮﯾﺢ ﺻ ﻮرت ﻧﻤﯿﭙ ﺬﯾﺮد ﺑﻠﮑ ﮫ garbage collectorاﯾ ﻦ روﯾ ﮫ را ﺧﻮدﮐ ﺎر
اﻧﺠﺎم ﻣﯿﺪھﺪ.
ﻣﺎﺷ ﯿﻦ ﻣﺠ ﺎزی ﺟ ﺎوا ﺟ ﺰء ﺑﻨﯿ ﺎدی ﭘﻼﺗﻔﺮﻣﮭ ﺎی زﺑ ﺎن ﺟ ﺎوا ﺑﺸ ﻤﺎر ﻣﯿ ﺮود ،ﮐ ﮫ ﻣﺴ ﻮﻟﯿﺖ ﻣﺴ ﺘﻘﻞ ﺳ ﺎﺧﺘﻦ ﺟ ﺎوا از ﺳ ﺨﺖ
اﻓ ﺰار و ﺳﯿﺴ ﺘﻢ ﻋﺎﻣ ﻞ ﺧ ﺎص را ﺑ ﺮ ﻋﮭ ﺪه دارد .ﻣﺎﺷ ﯿﻦ ﻣﺠ ﺎزی ﺟ ﺎوا ﯾ ﮏ ﻣﺎﺷ ﯿﻦ ﻣﺤﺎﺳ ﺒﺎﺗﯽ اﻧﺘﺰاﻋ ﯽ ﻣﯿﺒﺎﺷ ﺪ ﮐ ﮫ
ھﻤﺎﻧﻨ ﺪ ﯾ ﮏ ﻣﺎﺷ ﯿﻦ ﻣﺤﺎﺳ ﺒﺎﺗﯽ واﻗﻌ ﯽ دارای ﯾ ﮏ ﻣﺠﻤﻮﻋ ﮫ دﺳ ﺘﻮراﻟﻌﻤﻞ ﻣﯿﺒﺎﺷ ﺪ و ﻧﺎﺣﯿ ﮫ ھ ﺎی ﻣﺨﺘﻠ ﻒ ﺣﺎﻓﻈ ﮫ را در
زﻣ ﺎن اﺟ ﺮا دﺳ ﺘﮑﺎری ﻣﯿﮑﻨﻨ ﺪ .اوﻟ ﯿﻦ ﭘﯿ ﺎده ﺳ ﺎزی آزﻣﺎﯾﺸ ﯽ ﻣﺎﺷ ﯿﻦ ﻣﺠ ﺎزی ﺟ ﺎوا ﺗﻮﺳ ﻂ ﺳ ﺎن ﻣﯿﮑﺮوﺳﯿﺴ ﺘﻢ ﺻ ﻮرت
ﭘﺬﯾﺮﻓﺖ.
اﯾ ﻦ ﺳ ﻨﺪ وﯾﮋﮔﯿﮭ ﺎی ﺑﺮﺟﺴ ﺘﮫ ﺟ ﺎوا را ﺑﻄ ﻮر ﺧﻼﺻ ﮫ در ﻏﺎﻟ ﺐ ﺳ ﮫ ﻓﺼ ﻞ اراﺋ ﮫ ﻣﯿﺪھ ﺪ :ﻓﺼ ﻞ اول ﺗﺎرﯾﺨﭽ ﮫ ﺟ ﺎوا و
دﻻﯾ ﻞ ﻧﯿ ﺎز ﺑ ﮫ اﯾ ﻦ زﺑ ﺎن ﺑﺮﻧﺎﻣ ﮫ ﺳ ﺎزی را ﺗﺸ ﺮﯾﺢ ﻣﯿﮑﻨ ﺪ .در ﻓﺼ ﻞ دوم ﻣﻔ ﺎھﯿﻢ ﮐﻠ ﯽ زﺑ ﺎن ﺟ ﺎوا ﻣ ﻮرد ﺑﺮرﺳ ﯽ ﻗ ﺮار
ﮔﺮﻓﺘ ﮫ اﺳ ﺖ .ﻧﺤ ﻮ ﺟ ﺎوا ،اﻧ ﻮاع داده ھ ﺎی اﺻ ﻠﯽ ،ﻣﻔ ﺎھﯿﻢ ﻣ ﺪﯾﺮﯾﺖ ﺣﺎﻓﻈ ﮫ ،ﻣﺤ ﯿﻂ ﮐﺎﻣﭙﺎﯾ ﻞ ،ﻣﺤ ﯿﻂ زﻣ ﺎن اﺟ ﺮا و
ﻣﻔ ﺎھﯿﻤﯽ از اﯾ ﻦ ﻗﺒﯿ ﻞ ﺑ ﮫ ﺻ ﻮرت ﮐ ﺎﻣﻼ ﺧﻼﺻ ﮫ اﻣ ﺎ ﭘ ﺮ ﻣﺤﺘ ﻮا اراﺋ ﮫ ﺷ ﺪه اﺳ ﺖ .ﺳ ﺮاﻧﺠﺎم در آﺧ ﺮﯾﻦ ﺑﺨ ﺶ اﯾ ﻦ
ﻣﻘﻮﻟ ﮫ ﺳ ﺎﺧﺘﺎرھﺎی داده ﺑ ﮫ زﺑ ﺎن ﺟ ﺎوا ﻣ ﻮرد ﺑﺤ ﺚ ﻗ ﺮار ﮔﺮﻓﺘ ﮫ اﺳ ﺖ .ﮐﻠﯿ ﮫ ﺳ ﺎﺧﺘﺎرھﺎ در ﻏﺎﻟ ﺐ ﮐ ﻼس اراﺋ ﮫ ﺷ ﺪه اﻧ ﺪ
و ھﻤﭽﻨ ﯿﻦ اﻏﻠ ﺐ ﻣﻔ ﺎھﯿﻢ ﭘﯿﺸ ﺮﻓﺘﮫ ﺑ ﮫ ﻣﺎﻧﻨ ﺪ ﻣﺘ ﺪھﺎ و ﮐﻼﺳ ﮭﺎی اﻧﺘﺰاﻋ ﯽ ،ارﺳ ﺎل ﭘﺎراﻣﺘﺮھ ﺎ ،وراﺛ ﺖ ،ﭼﻨ ﺪرﯾﺨﺘﯽ و
ﻏﯿﺮه ﺑﮫ ﺗﺼﻮﯾﺮ ﮐﺸﯿﺪه ﺷﺪه اﻧﺪ.
+989189917288
1
ﻣﻘﺪﻣﮫ
ﺑ ﺮای ﺳ ﺎﻟﮭﺎی ﻣﺘ ﻮاﻟﯽ ﺗﻮﺳ ﻌﮫ دھﻨ ﺪﮔﺎن ﻧ ﺮم اﻓ ﺰار ﮐ ﺎرﺑﺮدی زﺑﺎﻧﮭ ﺎی cو c++را ﺑ ﮫ ﻋﻨ ﻮان ﺑﮭﺘ ﺮﯾﻦ اﻧﺘﺨ ﺎب ﺑ ﺮای
ﺑﺮﻧﺎﻣ ﮫ ﻧﻮﯾﺴ ﯽ ﻣ ﺪ ﻧﻈ ﺮ ﻗ ﺮار داده اﻧ ﺪ .در ﺳ ﺎﻟﮭﺎی اﺧﯿ ﺮ رﺷ ﺪ ﭼﻨﺪﮔﺎﻧ ﮫ ﻣﻌﻤ ﺎری ﺳ ﺨﺖ اﻓﺰارھ ﺎی ﻧﺎﺳ ﺎزﮔﺎر ﮐ ﮫ
ھﺮﮐ ﺪام ﭼﻨ ﺪﯾﻦ ﺳﯿﺴ ﺘﻢ ﻋﺎﻣ ﻞ ﻧﺎﺳ ﺎزﮔﺎر را ﭘﺸ ﺘﯿﺒﺎﻧﯽ ﻣﯿﮑﻨﻨ ﺪ ﺑ ﮫ ھﻤ ﺮاه ﭘ ﻼت ﻓ ﺮم ھ ﺎی ﻋﻤﻠﯿ ﺎﺗﯽ ﺑ ﺎ واﺳ ﻄﮭﺎی
ﮔﺮاﻓﯿﮑ ﯽ ﻧﺎﺳ ﺎزﮔﺎر ﻣﺸ ﮑﻼﺗﯽ را ﻣﻮﺟ ﺐ ﺷ ﺪه اﺳ ﺖ .اﻣ ﺮوز ﻣ ﺎ ﻣﯿﺒﺎﯾﺴ ﺖ ﺑ ﺎ در ﻧﻈ ﺮ داﺷ ﺘﻦ ﺗﻤ ﺎﻣﯽ اﯾ ﻦ ﻣ ﻮارد
ﺑﺮﻧﺎﻣ ﮫ ھ ﺎی ﮐ ﺎرﺑﺮدی را در ﯾ ﮏ ﻣﺤ ﯿﻂ ﺗ ﻮزﯾﻌﯽ ﻣﺸ ﺘﺮی-ﮐﺎرﮔ ﺬار ) (client – serverآﻣ ﺎده ﮐ ﺎر ﻧﮕ ﮫ دارﯾ ﻢ.
ﻇﮭ ﻮر اﯾﻨﺘﺮﻧ ﺖ ،ﺷ ﺒﮑﮫ ارﺗﺒ ﺎط ﺟﮭ ﺎﻧﯽ) وب ( ،و ﺗﺠ ﺎرت اﻟﮑﺘﺮوﻧﯿ ﮏ ﻣﻘﺪﻣ ﮫ ای اﺳ ﺖ ﺑ ﺮ ﭘﯿﭽﯿ ﺪﮔﯽ اﺑﻌ ﺎد ﺟﺪﯾ ﺪ در
روﻧ ﺪ ﺗﻮﺳ ﻌﮫ .ﺑ ﮫ ﻧﻈ ﺮ ﻧﻤﯿﺮﺳ ﺪ اﺑﺰارھ ﺎی ﻣ ﻮرد اﺳ ﺘﻔﺎده در ﺗﻮﺳ ﻌﮫ ﺑﺮﻧﺎﻣ ﮫ ھ ﺎی ﮐ ﺎﺑﺮدی ﮐﻤ ﮏ زﯾ ﺎدی ﺑ ﮫ ﻣ ﺎ ﺑﻨﻤﺎﯾﻨ ﺪ.
ﮐﻤﺎﮐ ﺎن ﻣﺸ ﮑﻼت ﻗ ﺪﯾﻤﯽ ﺑ ﺮ ﺳ ﺮ راه ﻣ ﺎ ﻣﯿﺒﺎﺷ ﻨﺪ ،ﺳ ﺒﮏ ﺟﺪﯾ ﺪ ﺗﮑﻨﯿﮑﮭ ﺎی ﺷ ﯽ ﮔ ﺮا ﻣﺸ ﮑﻼت ﺟﺪﯾ ﺪی را ﺧﻠ ﻖ ﻧﻤ ﻮده
اﺳﺖ ﺑﺪون اﯾﻨﮑﮫ ﻣﺸﮑﻼت ﻗﺪﯾﻤﯽ را از ﺳﺮ راه ﺑﺮدارد .اﻣﺎ ﺑﮫ اﻋﺘﻘﺎد ﺑﺴﯿﺎری اﯾﻦ ﺷﯿﻮه ﮐﺎرﺳﺎز ﺗﺮ اﺳﺖ.
ﺑﮫ ﻃﻮر ﮐﻠﯽ ﭘﻼﺗﻔﺮم ﺑﺮﻧﺎﻣﮫ ﻧﻮﯾﺴﯽ ﺟﺎوا ﻣﺤﯿﻄﯽ ﺳﺎده ،ﺷﯽ ﮔﺮا و ﺷﻔﺎف را اراﺋﮫ ﻣﯿﮑﻨﺪ ﮐﮫ ﺑﻮﺳﯿﻠﮫ ﭘﺸﺘﯿﺒﺎﻧﯽ از ﻣﺤﯿﻂ زﻣﺎن
اﺟﺮا ﺑﺮﻧﺎﻣﮫ ھﺎی ﻗﺎﺑﻞ ﺣﻤﻞ و ﺑﺎ ﻋﻤﻠﮑﺮد ﺑﺎﻻ را ﺑﮫ آﺳﺎﻧﯽ ﻣﯿﺘﻮان اﯾﺠﺎد ﻧﻤﻮد.
2
آﻏﺎز ﭘﺮوژه زﺑﺎن ﺑﺮﻧﺎﻣﮫ ﺳﺎزی ﺟﺎوا
زﺑ ﺎن ﺑﺮﻧﺎﻣ ﮫ ﻧﻮﯾﺴ ﯽ ﺟ ﺎوا ﺟﮭ ﺖ روﯾ ﺎروﯾﯽ ﺑ ﺎ ﭼﺎﻟﺸ ﮭﺎی ﺗﻮﺳ ﻌﮫ ﺑﺮﻧﺎﻣ ﮫ ھ ﺎی ﮐ ﺎرﺑﺮدی در زﻣﯿﻨ ﮫ ﻣﺤﯿﻄﮭ ﺎی
ﺗ ﻮزﯾﻌﯽ ﺷ ﺒﮑﮫ ھ ﺎی ﻋﻈ ﯿﻢ ﻧ ﺎھﻤﮕﻦ ) (heterogeneousﻃﺮاﺣ ﯽ ﺷ ﺪه اﺳ ﺖ .در ﻣﯿ ﺎن اﯾ ﻦ ﭼﺎﻟﺸ ﮭﺎ اﻣﻨﯿ ﺖ اراﺋ ﮫ ﺷ ﺪه
ﺗﻮﺳ ﻂ ﺑﺮﻧﺎﻣ ﮫ ﮐ ﺎرﺑﺮدی ﺑ ﺎ ﮐﻤﺘ ﺮﯾﻦ ﻣﯿ ﺰان ﻣﺼ ﺮف ﻣﻨ ﺎﺑﻊ ﺳﯿﺴ ﺘﻢ ،ﺗﻮاﻧ ﺎﯾﯽ اﺟ ﺮا ﺑ ﺮ روی ﭘﻼﺗﻔﺮﻣﮭ ﺎی ﻧ ﺮم اﻓ ﺰاری
و ﺳ ﺨﺖ اﻓ ﺰاری ﻣﺨﺘﻠ ﻒ و ﺗﻮﺳ ﻌﮫ دﯾﻨ ﺎﻣﯿﮑﯽ از درﺟ ﮫ اھﻤﯿ ﺖ ﺑ ﺎﻻﯾﯽ ﺑﺮﺧ ﻮردار اﺳ ﺖ .زﺑ ﺎن ﺑﺮﻧﺎﻣ ﮫ ﻧﻮﯾﺴ ﯽ ﺟ ﺎوا
ﻧﺘﯿﺠ ﮫ ﺑﺨﺸ ﯽ از ﭘ ﺮوژه ﺗﺤﻘﯿﻘ ﺎﺗﯽ ﺗﻮﺳ ﻌﮫ ﻧ ﺮم اﻓ ﺰار ﭘﯿﺸ ﺮﻓﺘﮫ ﺑ ﺮای ﺑ ﺎزه ﻋﻈﯿﻤ ﯽ از ﺷ ﺒﮑﮫ ھ ﺎ و ﺳﯿﺴ ﺘﻤﮭﺎی ﺗﻌﺒﯿ ﮫ
ﺷ ﺪه ﻣﯿﺒﺎﺷ ﺪ .ھ ﺪف ﺗﻮﺳ ﻌﮫ ﯾ ﮏ ﭘﻼﺗﻔ ﺮم ﮐﻮﭼ ﮏ ،ﻗﺎﺑ ﻞ اﻋﺘﻤ ﺎد ،ﻗﺎﺑ ﻞ ﺣﻤ ﻞ ،ﺗ ﻮزﯾﻌﯽ و ﺑﻼدرﻧ ﮓ ) (real timeﺑ ﻮد.
ھﻨﮕﺎﻣﯿﮑ ﮫ ﭘ ﺮوژه ﺷ ﺮوع ﺑ ﮫ ﮐ ﺎر ﻧﻤ ﻮد c++زﺑ ﺎن اﻧﺘﺨ ﺎﺑﯽ ﺑ ﻮد .اﻣ ﺎ ﺑ ﺎ ﮔﺬﺷ ﺖ زﻣ ﺎن رﺧ ﺪاد ﻣﺸ ﮑﻼت ﺑ ﺎ c++
اﻓ ﺰاﯾﺶ ﯾﺎﻓ ﺖ و اﯾ ﻦ ﯾﻌﻨ ﯽ اﯾﻨﮑ ﮫ ﻣﺴ ﺎﺋﻞ ﻣﯿﺘﻮاﻧ ﺪ ﺗﻮﺳ ﻂ اﯾﺠ ﺎد ﯾ ﮏ ﭘﻼﺗﻔ ﺮم ﺟﺪﯾ ﺪ ﺑ ﺮای زﺑ ﺎن ﺑﮭﺘ ﺮ ﺷﻨﺎﺳ ﺎﯾﯽ ﺷ ﻮد.
ﻃﺮاﺣ ﯽ و ﻣﻌﻤ ﺎری از ﭼﻨ ﺪﯾﻦ زﺑ ﺎن ﻣﺨﺘﻠ ﻒ از ﻗﺒﯿ ﻞ اﯾﻔ ﻞ ،ﺳ ﻤﺎﻟﺘﺎک ،ﺳ ﯽ ﺷ ﯽ ﮔ ﺮا ،و ﺳ ﯿﺪر/ﻣﯿﺴ ﺎ ﺗﺒﻌﯿ ﺖ ﻣﯿﮑ ﺮد.
ﻧﺘﯿﺠ ﮫ اﯾ ﻦ اﻣ ﺮ ﭘﻼﺗﻔ ﺮم زﺑ ﺎﻧﯽ اﺳ ﺖ ﮐ ﮫ ﺛﺎﺑ ﺖ ﺷ ﺪه اﺳ ﺖ در ﺗﻮﺳ ﻌﮫ ﺳ ﯿﺘﻤﮭﺎی ﺗ ﻮزﯾﻌﯽ و اﻣ ﻦ ﺑ ﺮای ﺑﺮﻧﺎﻣ ﮫ ھ ﺎی
ﮐﺎرﺑﺮدھﺎﯾﯽ در ﻣﺤﯿﻄﮭﺎﯾﯽ از ﺷﺒﮑﮫ ھﺎی ﺗﻌﺒﯿﮫ ﺷﺪه ﺗﺎ وب ﺟﮭﺎﻧﯽ و دﺳﮑﺘﺎپ اﯾﺪه آل اﺳﺖ.
زﺑ ﺎﻧﯽ ﺳ ﺎده ﮐ ﮫ ﺑ ﺪون ﮔﺴ ﺘﺮش ﺗﻤﺮﯾﻨ ﺎت ﺑﺮﻧﺎﻣ ﮫ ﻧﻮﯾﺴ ﯽ ھﻤﺎھﻨ ﮓ ﺑ ﺎ ﺷ ﯿﻮه ھ ﺎی ﻧ ﻮﯾﻦ ﻧ ﺮم اﻓ ﺰاری ﻗﺎﺑ ﻞ ﺑﺮﻧﺎﻣ ﮫ
رﯾ ﺰی اﺳ ﺖ از وﯾﮋﮔﯿﮭ ﺎی اﺻ ﻠﯽ ﺟ ﺎوا ﻣﯿﺒﺎﺷ ﺪ .ﻣﻔ ﺎھﯿﻢ اﺳﺎﺳ ﯽ ﺗﮑﻨﻮﻟ ﻮژی ﺟ ﺎوا ﺑ ﮫ ﺳ ﺮﻋﺖ ﻗﺎﺑ ﻞ ﻓﮭ ﻢ اﺳ ﺖ ،ﺑﺮﻧﺎﻣ ﮫ
ﻧﻮﯾﺴ ﺎن در ﺳ ﻄﻮح ﺧﯿﻠ ﯽ ﻣﭙﺘ ﺪی ﻗ ﺎدر ﺑ ﮫ ﺧﻼﻗﯿ ﺖ ﻣﯿﺒﺎﺷ ﻨﺪ .زﺑ ﺎن ﺟ ﺎوا از ﻟﺤﻈ ﮫ ﭘﯿ ﺪاﯾﺶ ﻣﺒﺘﻨ ﯽ ﺑ ﺮ ﺷ ﯽ ﻃﺮاﺣ ﯽ ﺷ ﺪ.
ﺗﮑﻨﻮﻟ ﻮژی اﺷ ﯿﺎء ﺳ ﺮاﻧﺠﺎم ﭘ ﺲ از ﻃ ﯽ ﮐ ﺮدن ﯾ ﮏ ﺑ ﺎزه زﻣ ﺎﻧﯽ ﺳ ﯽ ﺳ ﺎﻟﮫ ﻣﺴ ﯿﺮ اﺻ ﻠﯽ ﺧ ﻮد را ﺑﺮﻧﺎﻣ ﮫ ﺳ ﺎزی را
ﭘﯿ ﺪا ﻧﻤ ﻮد .ﻧﯿ ﺎز ﺑ ﮫ ﺳﯿﺴ ﺘﻤﮭﺎی ﺗ ﻮزﯾﻌﯽ ﻣﺒﺘﻨ ﯽ ﺑ ﺮ ﮐ ﺎرﮔﺰار/ﻣﺸ ﺘﺮی ﻣﻘ ﺎرن ﺑ ﺎ ﺑﺴ ﺘﮫ ﺑﻨ ﺪی ﭘﺎراداﯾﻤﺴ ﮭﺎی ارﺳ ﺎل ﭘﯿ ﺎم
در ﻧ ﺮم اﻓ ﺰار ﻣﺒﺘﻨ ﯽ ﺑ ﺮ ﺷ ﯽ ﻣﯿﺒﺎﺷ ﺪ .ﺑ ﺮای ﻓﻌﺎﻟﯿ ﺖ در داﺧ ﻞ ﻣﺤﯿﻄﮭ ﺎی ﻣﺒﺘﻨ ﯽ ﺑ ﺮ ﺷ ﺒﮑﮫ ﮐ ﮫ ﺑ ﮫ ﻃ ﻮر ﺻ ﻌﻮدی در
ﺣ ﺎل ﭘﯿﭽﯿ ﺪه ﺷ ﺪن ﻣﯿﺒﺎﺷ ﺪ ،ﺳﯿﺴ ﺘﻤﮭﺎی ﺑﺮﻧﺎﻣ ﮫ ﻧﻮﯾﺴ ﯽ ﻣﯿﺒﺎﯾﺴ ﺖ ﺑ ﺎ ﻣﻔ ﺎھﯿﻢ ﺷ ﯽ ﮔ ﺮا ﻣﻨﻄﺒ ﻖ ﺑﺎﺷ ﻨﺪ .ﺗﮑﻨﻮﻟ ﻮژی ﺟ ﺎوا
ﯾﮏ ﭘﻼﺗﻔﺮم ﺗﻮﺳﻌﮫ ﺷﻔﺎف و ﮐﺎراﻣﺪ ﻣﺒﺘﻨﯽ ﺑﺮ ﺷﯽ را اراﺋﮫ ﻣﯿﮑﻨﺪ.
3
ﺑﺮﻧﺎﻣ ﮫ ﻧﻮﯾﺴ ﺎن ﺟ ﺎوا ﻣﯿﺘﻮاﻧﻨ ﺪ ﺑ ﮫ ﮐﺘﺎﺑﺨﺎﻧ ﮫ ای از اﺷ ﯿﺎء آزﻣ ﺎﯾﺶ ﺷ ﺪه ﮐ ﮫ ﺗ ﻮاﺑﻌﯽ ﺑ ﺮای ﻋﻤﻠﯿ ﺎت اﻧ ﻮاع داده اﺻ ﻠﯽ،
ورودی/ﺧﺮوﺟ ﯽ ،راﺑﻄﮭ ﺎی ﺷ ﺒﮑﮫ ای و اﺑﺰارھ ﺎی ﮔﺮاﻓﯿﮑ ﯽ اراﺋ ﮫ ﻣﯿﺪھﻨ ﺪ دﺳﺘﺮﺳ ﯽ داﺷ ﺘﮫ ﺑﺎﺷ ﻨﺪ .اﯾ ﻦ ﮐﺘﺎﺑﺨﺎﻧ ﮫ ھ ﺎ
ﻣﯿﺘﻮاﻧﻨ ﺪ ﺟﮭ ﺖ اراﺋ ﮫ رﻓﺘ ﺎر ﺟﺪﯾ ﺪ ﮔﺴ ﺘﺮش ﯾﺎﺑﻨ ﺪ .ﮔﺮﭼ ﮫ c++ﺑ ﮫ ﻋﻨ ﻮان زﺑ ﺎﻧﯽ ﭘﯿ ﺎده ﺳ ﺎز ﭘﺬﯾﺮﻓﺘ ﮫ ﻧﯿﺴ ﺖ ،زﺑ ﺎن
ﺑﺮﻧﺎﻣ ﮫ ﺳ ﺎزی ﺟ ﺎوا ﺑ ﮫ ﻧﻈ ﺮ ﻣﯿﺮﺳ ﺪ ﺷ ﺒﺎھﺘﮭﺎی زﯾ ﺎدی ﺑ ﺎ c++دارد ﮐ ﮫ در ﻧﺘﯿﺠ ﮫ زﺑ ﺎﻧﯽ اﺳ ﺖ ﻣ ﺎﻧﻮس و آﺷ ﻨﺎ در
ﺣﺎﻟﯿﮑ ﮫ ﭘﯿﭽﯿ ﺪﮔﯿﮭﺎی ﻏﯿ ﺮ ﺿ ﺮور c++را ﮐﻨ ﺎر ﮔﺬاﺷ ﺘﮫ اﺳ ﺖ .ﺟ ﺎوا ﺑﺴ ﯿﺎری از وﯾﮋﮔﯿﮭ ﺎی ﺷ ﯽ ﮔﺮاﯾ ﯽ و راﺑ ﻂ
ﺑﺮﻧﺎﻣ ﮫ ﻧﻮﯾﺴ ﯽ c++را ﭘﺸ ﺘﯿﺒﺎﻧﯽ ﻣﯿﮑﻨ ﺪ ﯾﻌﻨ ﯽ اﯾﻨﮑ ﮫ ﺑﺮﻧﺎﻣ ﮫ ﻧﻮﯾﺴ ﺎن ﺑ ﮫ آﺳ ﺎﻧﯽ ﻣﯿﺘﻮاﻧﻨ ﺪ ﺑ ﮫ ﭘﻼﺗﻔ ﺮم ﺟ ﺎوا ﻣﮭ ﺎﺟﺮت
ﮐﺮده و ﺑﮫ ﺳﺮﻋﺖ ﺑﮫ ﻣﺮﺣﮫ ﺗﻮﻟﯿﺪ ﺑﺮﺳﻨﺪ.
زﺑ ﺎن ﺑﺮﻧﺎﻣ ﮫ ﺳ ﺎزی ﺟ ﺎوا ﺑ ﺮای ﺧﻠ ﻖ ﻧ ﺮم اﻓ ﺰار ﺑ ﺎ ﻗﺎﺑﻠﯿ ﺖ اﻋﺘﻤ ﺎد ﺑﺴ ﯿﺎر ﺑ ﺎﻻ ﻃﺮاﺣ ﯽ ﺷ ﺪ .ﺟ ﺎوا ﺗﺴ ﺖ زﻣ ﺎن ﮐﺎﻣﭙﺎﯾ ﻞ
و ﺗﺴ ﺖ زﻣ ﺎن اﺟ ﺮا را ﺑ ﮫ ﺻ ﻮرت ﮔﺴ ﺘﺮده در ﺳ ﻄﻮح ﻣﺨﺘﻠ ﻒ اﻧﺠ ﺎم ﻣﯿﺪھ ﺪ .وﯾﮋﮔﯿﮭ ﺎی زﺑ ﺎن ﺑﺮﻧﺎﻣ ﮫ ﻧﻮﯾﺴ ﺎن را ﺑ ﮫ
ﺳ ﻮی ﺑﺮﻧﺎﻣ ﮫ ﻧﻮﯾﺴ ﯽ ﻗﺎﺑ ﻞ اﻃﻤﯿﻨ ﺎن ﺳ ﻮق ﻣﯿﺪھ ﺪ .ﻣ ﺪل ﻣ ﺪﯾﺮﯾﺖ ﺣﺎﻓﻈ ﮫ ﺑﺸ ﺪت ﺳ ﺎده اﺳ ﺖ :اﺷ ﯿﺎء ﺗﻮﺳ ﻂ ﻋﻤﻠﮕ ﺮ
newاﯾﺠ ﺎد ﻣﯿﺸ ﻮﻧﺪ .اﻧ ﻮاع داده اﺷ ﺎره ﮔ ﺮ ﺗﻌﺮﯾ ﻒ ﺷ ﺪه ﺗﻮﺳ ﻂ ﺑﺮﻧﺎﻣ ﮫ ﻧ ﻮﯾﺲ وﺟ ﻮد ﻧ ﺪارد ،ﺧﺒ ﺮی از ﻋﻤﻠﯿ ﺎت
ﺣﺴ ﺎﺑﯽ ﺑ ﺮ روی اﺷ ﺎره ﮔ ﺮ ﻧﯿﺴ ﺖ ،زﺑﺎﻟ ﮫ روﯾ ﯽ ﺣﺎﻓﻈ ﮫ ﺑ ﮫ ﺻ ﻮرت اﺗﻮﻣﺎﺗﯿ ﮏ ﺻ ﻮرت ﻣﯿﭙﺰﯾ ﺮد .اﯾ ﻦ ﻣ ﺪل ﺳ ﺎده
ﻣ ﺪﯾﺮﯾﺖ ﺣﺎﻓﻈ ﮫ ﺗﻤ ﺎم ﺧﻄﺎھ ﺎی ﺑﺮﻧﺎﻣ ﮫ ﻧﻮﯾﺴ ﯽ ﮐ ﮫ ﺑﺮﻧﺎﻣ ﮫ ﻧﻮﯾﺴ ﺎن cو c++را آزار ﻣﯿ ﺪاد ﺣ ﺬف ﻣﯿﮑﻨ ﺪ .ﺗﮑﻨﻮﻟ ﻮژی
ﺟ ﺎوا ﺟﮭ ﺖ ﻋﻤﻠﯿ ﺎت در ﻣﺤﯿﻄﮭ ﺎی ﺗ ﻮزﯾﻌﯽ ﻃﺮاﺣ ﯽ ﺷ ﺪه اﺳ ﺖ ،ﺑ ﺪﯾﻦ ﻣﻌﻨ ﯽ ﮐ ﮫ اﻣﻨﯿ ﺖ ﺑ ﺎﻻﺗﺮﯾﻦ درﺟ ﮫ اھﻤﯿ ﺖ را
داراﺳ ﺖ .ﺑﻮﺳ ﯿﻠﮫ وﯾﮋﮔﯿﮭ ﺎی اﻣﻨﯿﺘ ﯽ و ﺳﯿﺴ ﺘﻢ زﻣ ﺎن اﺟ ﺮا ،ﺟ ﺎوا اﺟ ﺎزه ﺳ ﺎﺧﺖ ﺑﺮﻧﺎﻣ ﮫ ھ ﺎی ﮐ ﺎرﺑﺮدی را ﻣﯿﺪھ ﺪ ﮐ ﮫ
ﺑ ﮫ ھ ﯿﭻ وﺟ ﮫ ﻣ ﻮرد ﺗﺠ ﺎوز ﻋﻮاﻣ ﻞ ﻣﺤﯿﻄ ﯽ ﻗ ﺮار ﻧﻤﯿﮕﯿﺮﻧ ﺪ .در ﻣﺤ ﯿﻂ ﺷ ﺒﮑﮫ ،ﮐﺎرﺑﺮدھ ﺎی ﻧﻮﺷ ﺘﮫ ﺷ ﺪه ﺗﻮﺳ ﻂ ﺟ ﺎوا
در ﻣﻘﺎﺑ ﻞ ﻧﻔ ﻮذ ﮐ ﺪ ﻏﯿﺮﻣﺠ ﺎز ﮐ ﮫ ﺳ ﻌﯽ در ﺑﺪﺳ ﺖ آوردن اﻃﻼﻋ ﺎت ﻣﺨﻔ ﯽ و اﯾﺠ ﺎد وﯾ ﺮوس ﯾ ﺎ ﺣﻤﻠ ﮫ ﺑ ﮫ ﺳﯿﺴ ﺘﻢ ﻓﺎﯾ ﻞ
دارد اﯾﻤﻦ ﻣﯿﺒﺎﺷﻨﺪ.
ﺗﮑﻨﻮﻟ ﻮژی ﺟ ﺎوا ﺟﮭ ﺖ ﭘﺸ ﺘﯿﺒﺎﻧﯽ از ﮐﺎرﺑﺮدھ ﺎﯾﯽ ﮐ ﮫ در ﻣﺤﯿﻄﮭ ﺎی ﺷ ﺒﮑﮫ ﺑ ﺎ ﻣﻌﻤ ﺎری ﻣﺠ ﺰا ﻣﺴ ﺘﻘﺮ ﻣﯿﺸ ﻮﻧﺪ ﻃﺮاﺣ ﯽ
ﺷ ﺪه اﺳ ﺖ .در اﯾ ﻦ ﻗﺒﯿ ﻞ ﻣﺤﯿﻄﮭ ﺎ ﺑﺮﻧﺎﻣ ﮫ ھ ﺎی ﮐ ﺎرﺑﺮدی ﻣﯿﺒﺎﯾﺴ ﺖ ﻗﺎﺑﻠﯿ ﺖ اﺟ ﺮا ﺑ ﺮ روی ﻣﻌﻤ ﺎری ھ ﺎی ﻣﺨﺘﻠ ﻒ
ﺳ ﺨﺖ اﻓ ﺰار را داﺷ ﺘﮫ ﺑﺎﺷ ﻨﺪ .در درون اﯾ ﻦ ﭘﻼﺗﻔﺮﻣﮭ ﺎی ﻣﺨﺘﻠ ﻒ ﺳ ﺨﺖ اﻓ ﺰاری ،ﺑﺮﻧﺎﻣ ﮫ ھ ﺎی ﮐ ﺎرﺑﺮدی ﻣﯿﺒﺎﯾﺴ ﺖ
ﺑ ﺮ روی ﺳﯿﺴ ﺘﻢ ﻋﺎﻣﻠﮭ ﺎی ﻣﺨﺘﻠ ﻒ اﺟ ﺮا و ﻗﺎﺑﻠﯿ ﺖ ھﻤﮑ ﺎری ﺑ ﺎ واﺳ ﻄﮭﺎی ﻣﺨﺘﻠ ﻒ ﺑﺮﻧﺎﻣ ﮫ ﻧﻮﯾﺴ ﯽ را داﺷ ﺘﮫ ﺑﺎﺷ ﻨﺪ.
ﺑ ﺮای ﺳ ﺎزﮔﺎری ﻣﺤﯿﻄﮭ ﺎی ﻋﻤﻠﯿ ﺎﺗﯽ ﻣﺘﻔ ﺎوت ،ﮐﺎﻣﭙ ﺎﯾﻠﺮ ﺟ ﺎوا ﺑﺎﯾ ﺖ ﮐ ﺪھﺎ را ﺗﻮﻟﯿ ﺪ ﻣﯿﮑﻨ ﺪ—ﯾ ﮏ ﺳ ﺎﺧﺘﺎر ﺑ ﯽ ﻃ ﺮف
ﺑ ﺎ ﻓﺮﻣ ﺖ ﻣﯿ ﺎﻧﯽ ﺟﮭ ﺖ اﻧﺘﻘ ﺎل ﻣ ﻮﺛﺮ ﮐ ﺪ ﺑ ﮫ ﭘﻼﺗﻔﺮﻣﮭ ﺎی ﻧ ﺮم اﻓ ﺰاری و ﺳ ﺨﺖ اﻓ ﺰاری ﻣﺨﺘﻠ ﻒ .ﻣﺎھﯿ ﺖ ﻣﻔﺴ ﺮی ﺟ ﺎوا
ھ ﻢ ﻣﺸ ﮑﻞ ﺗﻮزﯾ ﻊ دودوﯾ ﯽ و ھ ﻢ ﻣﺴ ﺌﻠﮫ ﻣ ﺪل را ﺣ ﻞ ﻣﯿﮑﻨ ﺪ ،ﺑﺎﯾ ﺖ ﮐ ﺪھﺎی ﯾﮑﺴ ﺎن زﺑ ﺎن ﺑﺮﻧﺎﻣ ﮫ ﻧﻮﯾﺴ ﯽ ﺟ ﺎوا ﺑ ﺮ روی
ھ ﺮ ﭘﻼﺗﻔﺮﻣ ﯽ اﺟ ﺮا ﻣﯿﺸ ﻮد .در واﻗ ﻊ ﺳ ﺎﺧﺘﺎر ﺑ ﯽ ﻃ ﺮف ﺗﻨﮭ ﺎ ﯾ ﮏ ﺑﺨ ﺶ ﺳﯿﺴ ﺘﻢ ﻗﺎﺑ ﻞ ﺣﻤ ﻞ ﻣﯿﺒﺎﺷ ﺪ .ﺟ ﺎوا ﻣﺮاﺣ ﻞ
ﺑﻌ ﺪی ﻗﺎﺑﻠﯿ ﺖ ﺣﻤ ﻞ را ﺑﻤﺠ ﺮد ﺗﻌﺮﯾ ﻒ ﭘﺎﯾ ﮫ زﺑ ﺎن ﻃ ﯽ ﻣﯿﮑﻨ ﺪ .ﺟ ﺎوا رﯾﺴ ﮏ ﻣﯿﮑﻨ ﺪ و اﻧ ﺪازه داده ھ ﺎی اﺳﺎﺳ ﯽ و رﻓﺘ ﺎر
ﻋﻤﻠﮕﺮھ ﺎی ﻣﺤﺎﺳ ﺒﺎﺗﯽ را در ﺳ ﻄﺢ ﭘ ﺎﯾﯿﻦ ﻗ ﺮار ﻣﯿﺪھ ﺪ ،ﺑ ﺪﯾﻦ ﻣﻌﻨ ﯽ ﮐ ﮫ ﺑﺮﻧﺎﻣ ﮫ ھ ﺎ ﺑ ﺮ روی ھ ﺮ ﭘﻼﺗﻔ ﺮم ﯾﮑﺴ ﺎن
ھﺴ ﺘﻨﺪ و ﺟ ﺎی ﻧﮕﺮاﻧ ﯽ ﻧﯿﺴ ﺖ زﯾ ﺮا اﻧ ﻮاع داده ﻧﺎﺳ ﺎزﮔﺎر در ﺳﺮﺗﺎﺳ ﺮ ﻣﻌﻤ ﺎری ھ ﺎی ﻧ ﺮم اﻓ ﺰاری و ﺳ ﺨﺖ اﻓ ﺰاری
ﻣﺨﺘﻠﻒ وﺟﻮد ﻧﺪارد.
ﺳ ﺎﺧﺘﺎر ﺑ ﯽ ﻃ ﺮف و ﭘﻼﺗﻔ ﺮم زﺑ ﺎن ﻗﺎﺑ ﻞ ﺣﻤ ﻞ ﺗﮑﻨﻮﻟ ﻮژی ﺟ ﺎوا ﺑ ﺎ ﻋﻨ ﻮان ﻣﺎﺷ ﯿﻦ ﻣﺠ ﺎزی ﺟ ﺎوا ﺷ ﻨﺎﺧﺘﮫ ﻣﯿﺸ ﻮد ﮐ ﮫ
ﻣﺸﺨﺼ ﮫ ﯾ ﮏ ﻣﺎﺷ ﯿﻦ اﻧﺘﺰاﻋ ﯽ اﺳ ﺖ ﺑ ﺮای اﯾﻨﮑ ﮫ ﮐﺎﻣﭙﺎﯾﻠﺮھ ﺎی زﺑ ﺎن ﺟ ﺎوا ﺑﺘﻮاﻧ ﺪ ﺗﻮﻟﯿ ﺪ ﮐ ﺪ ﻧﻤﺎﯾﻨ ﺪ .ﭘﯿ ﺎده ﺳ ﺎزی ﺧ ﺎص
ﻣﺎﺷ ﯿﻦ ﻣﺠ ﺎزی ﺟ ﺎوا ﺑ ﺮای ﭘﻼﺗﻔﺮﻣﮭ ﺎی ﻧ ﺮم اﻓ ﺰاری و ﺳ ﺨﺖ اﻓ ﺰاری ﺧ ﺎص ﺗﺤﻘ ﻖ واﻗﻌ ﯽ ﻣﺎﺷ ﯿﻦ ﻣﺠ ﺎزی را اراﺋ ﮫ
ﻣﯿﺪھ ﺪ .ﻣﺎﺷ ﯿﻦ ﻣﺠ ﺎزی ﺟ ﺎوا اﺳﺎﺳ ﺎ ﺑ ﺮ ﭘﺎﯾ ﮫ وﯾﮋﮔ ﯽ راﺑ ﻂ ﭘﻮﺳ ﯿﮑﺲ ﻣﯿﺒﺎﺷ ﺪ— ﺗﻌﺮﯾﻔ ﯽ اﺳ ﺘﺎﻧﺪارد از راﺑ ﻂ ﺳﯿﺴ ﺘﻢ
ﻗﺎﺑ ﻞ ﺣﻤ ﻞ .ﭘﯿ ﺎده ﺳ ﺎزی ﻣﺎﺷ ﯿﻦ ﻣﺠ ﺎزی ﺟ ﺎوا ﺑ ﺮ روی ﻣﻌﻤ ﺎری ھ ﺎی ﻣ ﺪرن ﻧﺴ ﺒﺘﺎ ﺳ ﺮ راﺳ ﺖ اﺳ ﺖ ﺑ ﮫ ﺷ ﺮﻃﯽ ﮐ ﮫ
ﭘﻼﺗﻔﺮم ﻣﻮرد ﻧﻈﺮ ﻧﯿﺎزﻣﻨﺪﯾﮭﺎی اﺳﺎﺳﯽ از ﻗﺒﯿﻞ ﭘﺸﺘﯿﺒﺎﻧﯽ از اﺟﺮای ﭼﻨﺪﯾﻦ ﻓﻌﺎﻟﯿﺖ ھﻤﺰﻣﺎن را ﻣﺪﻧﻈﺮ ﻗﺮار دھﺪ.
4
ﻋﻤﻠﮑ ﺮد ھﻤﯿﺸ ﮫ ﻣ ﻮرد ﺗﻮﺟ ﮫ اﺳ ﺖ .ﭘﻼﺗﻔ ﺮم ﺟ ﺎوا ﺑ ﺎﻻﺗﺮﯾﻦ ﻋﻤﻠﮑ ﺮد را ﺑﻮﺳ ﯿﻠﮫ اﯾ ﻦ ﺷ ﯿﻮه ﺑﺪﺳ ﺖ آورد ﮐ ﮫ ﻣﻔﺴ ﺮ
ﻣﯿﺘﻮاﻧ ﺪ ﺑ ﺪون ﻧﯿ ﺎز ﺑ ﮫ ﺗﺴ ﺖ ﻣﺤ ﯿﻂ زﻣ ﺎن اﺟ ﺮا ﺑ ﺎ ﺳ ﺮﻋﺖ ﺑ ﺎﻻ اﺟ ﺮا ﺷ ﻮد .آﺷ ﻐﺎل ﺟﻤ ﻊ ﮐ ﻦ ﺑ ﮫ ﻋﻨ ﻮان ﯾ ﮏ رﯾﺴ ﻤﺎن ﺑ ﺎ
اوﻟﻮﯾ ﺖ ﭘ ﺎﯾﯿﻦ در ﭘ ﺲ زﻣﯿﻨ ﮫ در ﺣ ﺎل اﺟﺮاﺳ ﺖ ،ﺗﻀ ﻤﯿﻦ ﺑ ﺎﻻﺗﺮﯾﻦ اﺣﺘﻤ ﺎل ﮐ ﮫ ﺣﺎﻓﻈ ﮫ در ﻣﻮﻗ ﻊ ﻧﯿ ﺎز در دﺳ ﺘﺮس
اﺳ ﺖ ﻣﻨﺠ ﺮ ﺑ ﮫ ﻋﻤﻠﮑ ﺮد ﺑﮭﺘ ﺮی ﻣﯿﺸ ﻮد .ﺑﺮﻧﺎﻣ ﮫ ھ ﺎی ﮐ ﺎرﺑﺮدی ﮐ ﮫ ﻧﯿﺎزﻣﻨ ﺪ ﺑﯿﺸ ﺘﺮﯾﻦ اﻧ ﺪازه ﻗ ﺪرت ﻣﺤﺎﺳ ﺒﺎﺗﯽ ﻣﯿﺒﺎﺷ ﻨﺪ
ﻣﯿﺘﻮاﻧﻨ ﺪ اﯾﺠ ﺎد ﺷ ﻮﻧﺪ ،ﻗﺴ ﻤﺘﮭﺎﯾﯽ ﮐ ﮫ ﻧﯿﺎزﻣﻨ ﺪ ﻣﺤﺎﺳ ﺒﺎت ﻓﺸ ﺮده ای ﻣﯿﺒﺎﺷ ﻨﺪ ﻣﯿﺘﻮاﻧ ﺪ ﺗﻮﺳ ﻂ ﮐ ﺪ ﻣﺎﺷ ﯿﻦ ﻧﻮﺷ ﺘﮫ ﺷ ﻮد و
ﺳ ﭙﺲ ﺑﻮﺳ ﯿﻠﮫ ﭘﻼﺗﻔ ﺮم ﺟ ﺎوا ﺑ ﺎ ﺑﺮﻧﺎﻣ ﮫ اﻟﺼ ﺎق ﺷ ﻮد .ﻧﺘﯿﺠ ﮫ اﯾﻨﮑ ﮫ ﮐﺎرﺑﺮدھ ﺎی ﻣﺤ ﺎوره ای ﺑ ﮫ ﺳ ﺮﻋﺖ ﭘﺎﺳ ﺦ ﻣﯿﺪھﻨ ﺪ
ﺣﺘﯽ اﮔﺮ ﺗﻔﺴﯿﺮ ﺷﻮﻧﺪ.
ﻣﻔﺴ ﺮ ﺟ ﺎوا ﻣﯿﺘﻮاﻧ ﺪ ﺑﺎﯾ ﺖ ﮐ ﺪھﺎ را ﻣﺴ ﺘﻘﯿﻤﺎ ﺑ ﺮ روی ھ ﺮ ﻣﺎﺷ ﯿﻨﯽ ﮐ ﮫ ﻣﻔﺴ ﺮ و ﺳﯿﺴ ﺘﻢ زﻣ ﺎن اﺟ ﺮا ﺑ ﺮ روی آن
ﺑﺎرﮔ ﺬاری ﺷ ﺪه اﺳ ﺖ را اﺟ ﺮا ﻧﻤﺎﯾ ﺪ .در ﯾ ﮏ ﭘﻼﺗﻔ ﺮم ﻣﻔﺴ ﺮی از ﻗﺒﯿ ﻞ ﺟ ﺎوا ﻓ ﺎز ﻟﯿﻨ ﮏ ﯾ ﮏ ﺑﺮﻧﺎﻣ ﮫ ﺳ ﺎده و ﻓﺮاﯾﻨ ﺪی
ﺳ ﺒﮏ وزن ﺗﻠﻘ ﯽ ﻣﯿﺸ ﻮد ،درﻧﺘﯿﺠ ﮫ ﺳ ﯿﮑﻠﮭﺎی ﺗﻮﺳ ﻌﮫ از ﻗﺒﯿ ﻞ ﻧﻤﻮﻧ ﮫ ﺳ ﺎزی و آزﻣ ﺎﯾﺶ ﻧﺴ ﺒﺖ ﺑ ﮫ ﮐﺎﻣﭙﺎﯾ ﻞ ﺳ ﻨﺘﯽ
ﺳ ﻨﮕﯿﻦ وزن ﺑ ﺎ ﺳ ﺮﻋﺖ ﺑ ﺎﻻﺗﺮی اﻧﺠ ﺎم ﻣﯿﭙ ﺬﯾﺮد .ﮐﺎرﺑﺮدھ ﺎی ﻣ ﺪرن ﻣﺒﺘﻨ ﯽ ﺑ ﺮ ﺷ ﺒﮑﮫ از ﻗﺒﯿ ﻞ ﻣﺮورﮔ ﺮ HotJava
ﺑ ﺮای ﻣ ﺮور ﺻ ﻔﺤﺎت وب ،ﻋﻤﻮﻣ ﺎ ﻧﯿﺎزﻣﻨ ﺪ اﻧﺠ ﺎم ﭼﻨ ﺪﯾﻦ ﻋﻤ ﻞ در ﯾ ﮏ زﻣ ﺎن ﻣﯿﺒﺎﺷ ﻨﺪ .ﻗﺎﺑﻠﯿ ﺖ ﭼﻨ ﺪ رﯾﺴ ﻤﺎﻧﯽ ﺑ ﮫ
ﻣﻌﻨ ﯽ ﺳ ﺎﺧﺖ ﺑﺮﻧﺎﻣ ﮫ ھ ﺎی ﮐ ﺎرﺑﺮدی ﺗﻮﺳ ﻂ ﭼﻨ ﺪﯾﻦ ﻓﻌﺎﻟﯿ ﺖ ﮐ ﮫ ﻣ ﻮازی اﺟ ﺮا ﻣﯿﺸ ﻮﻧﺪ ،ﻣﯿﺒﺎﺷ ﺪ .ازاﯾﻨ ﺮو ﺑﯿﺸ ﺘﺮﯾﻦ
ﮐ ﺎرﺑﺮد ﭼﻨ ﺪ رﯾﺴ ﻤﺎﻧﯽ ھﻨﮕ ﺎم ﺳ ﺎﺧﺖ راﺑﻄﮭ ﺎﯾﯽ اﺳ ﺖ ﮐ ﮫ ﻣﺴ ﺘﻘﯿﻤﺎ ﺑ ﺎ ﮐ ﺎرﺑﺮ ارﺗﺒ ﺎط دارﻧ ﺪ .ﭘﻼﺗﻔ ﺮم ﺟ ﺎوا ﺗﻮﺳ ﻂ ﯾ ﮏ
ﺳﯿﺴ ﺘﻢ ھﻤﺰﻣ ﺎﻧﯽ و ﺧﺒ ﺮه اﺻ ﻠﯽ ﭼﻨ ﺪ رﯾﺴ ﻤﺎﻧﯽ را در ﺳ ﻄﺢ زﺑ ﺎن ﭘﺸ ﺘﯿﺒﺎﻧﯽ ﻣﯿﮑﻨ ﺪ .در ﺣﺎﻟﯿﮑ ﮫ ﮐﺎﻣﭙ ﺎﯾﻠﺮ ﺟ ﺎوا در
ﺗﺴ ﺖ اﯾﺴ ﺘﺎ در در زﻣ ﺎن ﮐﺎﻣﭙﺎﯾ ﻞ ﺳ ﺨﺘﮕﯿﺮاﻧﮫ ﻋﻤ ﻞ ﻣﯿﮑﻨ ﺪ ،زﺑ ﺎن و ﺳﯿﺴ ﺘﻢ زﻣ ﺎن اﺟ ﺮا در ﻣﺮﺣﻠ ﮫ ﭘﯿﻮﻧ ﺪ ﺧ ﻮد ﺑ ﮫ
ﺻ ﻮرت ﭘﻮﯾ ﺎ ﻋﻤ ﻞ ﻣﯿﮑﻨﻨ ﺪ .ﮐﻼﺳ ﮭﺎ ﺗﻨﮭ ﺎ در ﺻ ﻮرﺗﯽ ﻟﯿﻨ ﮏ ﻣﯿﺸ ﻮﻧﺪ ﮐ ﮫ ﻣ ﻮرد ﻧﯿ ﺎز ﺑﺎﺷ ﻨﺪ .ﻣﺎژوﻟﮭ ﺎی ﮐ ﺪ ﻣﯿﺘﻮاﻧﻨ ﺪ ﺑ ﮫ
ھﻨﮕ ﺎم ﺗﻘﺎﺿ ﺎ از ﻣﻨ ﺎﺑﻊ ﻣﺨﺘﻠ ﻒ ﻟﯿﻨ ﮏ ﺷ ﻮﻧﺪ ،ﺣﺘ ﯽ از ﻃﺮﯾ ﻖ ﻣﻨ ﺎﺑﻊ ﻣﻮﺟ ﻮد ﺑ ﺮ روی ﺷ ﺒﮑﮫ .در ﻣ ﻮرد ﻣﺮورﮔ ﺮ
HotJavaو ﺑﺮﻧﺎﻣ ﮫ ھ ﺎی ﻣﺸ ﺎﺑﮫ ،ﮐ ﺪھﺎی ﻗﺎﺑ ﻞ اﺟ ﺮا ﻣﯿﺘﻮاﻧ ﺪ از ھ ﺮ ﺟ ﺎﯾﯽ در ﺷ ﺒﮑﮫ ﺑﺎرﮔ ﺬاری ﺷ ﻮد ،اﯾ ﻦ اﻣ ﺮ
ﺑﺮﻧﺎﻣﮫ ھﺎی ﮐﺎرﺑﺮدی را ﻗﺎدر ﻣﯿﺴﺎزد ھﻤﯿﺸﮫ ﺑﮫ روز ﺑﺎﺷﻨﺪ.
ﻧﺘﯿﺠ ﮫ اﯾﻨﮑ ﮫ ،ﺗﮑﻨﻮﻟ ﻮژی ﺟ ﺎوا و ﻣﺤ ﯿﻂ زﻣ ﺎن اﺟ ﺮای آن ادﻏ ﺎم ﺷ ﺪه اﻧ ﺪ ﺗ ﺎ ﯾ ﮏ ﺳﯿﺴ ﺘﻢ ﺑﺮﻧﺎﻣ ﮫ ﻧﻮﯾﺴ ﯽ ﻗﺪرﺗﻤﻨ ﺪ ﺧﻠ ﻖ
ﺷ ﻮد.ﺳ ﺮاﻧﺠﺎم ﺗﻮﺳ ﻌﮫ ﺑﺮﻧﺎﻣ ﮫ ھ ﺎی ﮐ ﺎرﺑﺮدی ﺑ ﺎ اﺳ ﺘﻔﺎده از زﺑ ﺎن ﺑﺮﻧﺎﻣ ﮫ ﺳ ﺎزی ﺟ ﺎوا ﻧ ﺮم اﻓ ﺰاری اﺳ ﺖ ﮐ ﮫ ﻗﺎﺑ ﻞ
ﺣﻤ ﻞ ﺑ ﺮ روی ﻣﺎﺷ ﯿﻨﮭﺎﯾﯽ ﺑ ﺎ ﻣﻌﻤ ﺎری ﻣﺨﺘﻠ ﻒ ﺑ ﺎ ﺳﯿﺴ ﺘﻤﮭﺎی ﻋﺎﻣ ﻞ ﻣﺨﺘﻠ ﻒ ﺑ ﮫ ھﻤ ﺮاه راﺑﻄﮭ ﺎی ﮐ ﺎرﺑﺮ ﮔﺮاﻓﯿﮑ ﯽ ﮐ ﮫ
اﻣﻨﯿﺖ و ﻋﻤﻠﮑﺮدی ﺑﺎﻻ را داراﺳﺖ.
5
ﻣﻔﺎھﯿﻢ ﮐﻠﯽ زﺑﺎن ﺟﺎوا
ﺟ ﺎوا ﯾ ﮏ ﻧﮕ ﺮش ﺟﺪﯾ ﺪ در ارزﯾ ﺎﺑﯽ زﺑﺎﻧﮭ ﺎی ﺑﺮﻧﺎﻣ ﮫ ﺳ ﺎزی اراﺋ ﮫ ﻣﯿﮑﻨ ﺪ ،ﯾ ﮏ زﺑ ﺎن ﺳ ﺎده و ﮐﻮﭼ ﮏ ﮐ ﮫ ھﭽﻨ ﺎن
ﻓﺮاﮔﯿ ﺮ اﺳ ﺖ زﯾ ﺮا ﻣﺒﻨ ﺎﯾﯽ اﺳ ﺖ ﺑ ﺮای ﺗﻮﺳ ﻌﮫ ﺣﺠ ﻢ ﻋﻈﯿﻤ ﯽ از ﻧ ﺮم اﻓﺰارھ ﺎی ﮐ ﺎرﺑﺮدی .ﮔﺮﭼ ﮫ ﺟ ﺎوا ﻇ ﺎھﺮی ﺷ ﺒﯿﮫ
ﺑ ﮫ cو c++دارد ،اﻣ ﺎ ﺳ ﺎدﮔﯽ ﺟ ﺎوا ﻣﺮﺑ ﻮط ﺑ ﮫ ﺣ ﺬف ﺳﯿﺴ ﺘﻤﺎﺗﯿﮏ ﺑﺮﺧ ﯽ وﯾﮋﮔﯿﮭ ﺎی زﺑﺎﻧﮭ ﺎی ﻣﺎﻗﺒ ﻞ ﺧ ﻮد ﻣﯿﺸ ﻮد.
ﺑﻨ ﺎﺑﺮاﯾﻦ ﺟ ﺎوا ﺳ ﺎده اﺳ ﺖ زﯾ ﺮا ﺑﺮﺧ ﯽ وﯾﮋﮔﯿﮭ ﺎی ﻏﯿ ﺮ ﺿ ﺮور را ﮐﻨ ﺎر ﮔﺬاﺷ ﺘﮫ اﺳ ﺖ و آﺷﻨﺎﺳ ﺖ زﯾ ﺮا ﺷ ﺒﯿﮫ cو
c++ﺑﮫ ﻧﻈﺮ ﻣﯿﺮﺳﺪ.
ﺑ ﯽ آﻻﯾﺸ ﯽ و ﺳ ﺎدﮔﯽ ﯾﮑ ﯽ از اھ ﺪاف ﻣﮭ ﻢ ﺟ ﺎوا ﻣﯿﺒﺎﺷ ﺪ .ﺳ ﺎدﮔﯽ و ﺣ ﺬف وﯾﮋﮔﯿﮭ ﺎﯾﯽ ﻣﺸ ﮑﻮک از اﺟ ﺪادش ﺑﺎﻋ ﺚ
ﮐ ﻮﭼﮑﯽ و ﮐ ﺎھﺶ ﺑ ﺎر اﺿ ﺎﻓﯽ ﺑﺮﻧﺎﻣ ﮫ ﻧ ﻮﯾﺲ ھﻨﮕ ﺎم ﺗﻮﻟﯿ ﺪ ﮐﺎرﺑﺮدھ ﺎی ﻣﻄﻤ ﺌﻦ در ﺟ ﺎوا ﺷ ﺪه اﺳ ﺖ .ﺑ ﮫ ھﻤ ﯿﻦ دﻟﯿ ﻞ ﺗ ﯿﻢ
ﻃﺮاﺣ ﯽ ﺟ ﺎوا ﺑﺴ ﯿﺎری از ﺟﻨﺒ ﮫ ھ ﺎی زﺑﺎﻧﮭ ﺎی cو c++را ﻣ ﻮرد ﺑﺮرﺳ ﯽ ﻗ ﺮار داد ﺗ ﺎ وﯾﮋﮔﯿﮭ ﺎﯾﯽ ﮐ ﮫ در ﺑﺎﻓ ﺖ
ﺑﺮﻧﺎﻣ ﮫ ﻧﻮﯾﺴ ﯽ ﻣ ﺪرن ﺷ ﯽ ﮔ ﺮا ﻣﯿﺘﻮاﻧ ﺪ ﮐﻨ ﺎر ﮔﺬاﺷ ﺘﮫ ﺷ ﻮد را ﺷﻨﺎﺳ ﺎﯾﯽ ﮐﻨ ﺪ .دﯾﮕ ﺮ ھ ﺪف ﻣﮭ ﻢ ﺟ ﺎو اراﺋ ﮫ زﺑ ﺎﻧﯽ ﺑ ﻮد
ﮐ ﮫ ﺑ ﺮای ﺑﺴ ﯿﺎری از ﺑﺮﻧﺎﻣ ﮫ ﻧﻮﯾﺴ ﺎن ﮐﺎﻣﭙﯿﻮﺗﺮھ ﺎی ﺷﺨﺼ ﯽ و ﭘﻼﺗﻔﺮﻣﮭ ﺎی اﯾﺴ ﺘﮕﺎه ﮐ ﺎری آﺷ ﻨﺎ ﺑ ﮫ ﻧﻈ ﺮ ﺑﺮﺳ ﺪ.
ﺑﻨ ﺎﺑﺮاﯾﻦ c++ﮔﺰﯾﻨ ﮫ ﺑﮭﺘ ﺮی ﺑ ﻮد .ﺑﺮﻧﺎﻣ ﮫ ﻧﻮﯾﺴ ﺎن آﺷ ﻨﺎ ﺑ ﺎ ،c++ ،cاﯾﻔ ﻞ ،اﯾ ﺪا و زﺑﺎﻧﮭ ﺎی ﻣ ﺮﺗﺒﻂ ﻇ ﺮف ﮐﻤﺘ ﺮ از
ﭼﻨﺪ ھﻔﺘﮫ ﺟﺎوا را ﺑﮫ ﺧﻮﺑﯽ ﻓﺮا ﻣﯿﮕﯿﺮﻧﺪ.
ﺑﺮای ﻧﺸﺎن دادن ﺟﻨﺒﮫ ھﺎی آﺷﻨﺎ و ﺳﺎده ﺟﺎوا ،ﺑﮫ ﺷﯿﻮه ﺳﻨﺘﯽ ﮐﺘﺎﺑﮭﺎی ﻣﻌﺘﺒﺮ ﺑﺮﻧﺎﻣﮫ ﻧﻮﯾﺴﯽ ﺑﺮﻧﺎﻣﮫ اﭘﺘﺪاﯾﯽ HellowWord
در زﯾﺮ آﻣﺪه اﺳﺖ .اﯾﻦ ﺑﺮﻧﺎﻣﮫ ﺳﺎده ﺗﺮﯾﻦ ﺑﺮﻧﺎﻣﮫ ای اﺳﺖ ﮐﮫ ﻣﯿﺘﻮاﻧﯿﺪ در زﺑﺎن ﺟﺎوا ﺑﻨﻮﯾﺴﯿﺪ:
{ class HelloWorld
{ )][static public void main(String args
;)"!System.out.println("Hello world
}
}
6
وﯾﮋﮔﯿﮭﺎی اﺻﻠﯽ زﺑﺎن ﺑﺮﻧﺎﻣﮫ ﺳﺎزی ﺟﺎوا
ﺑ ﮫ ﻏﯿ ﺮ از اﻧ ﻮاع داده اوﻟﯿ ﮫ ،ھﻤ ﮫ ﭼﯿ ﺰ در زﺑ ﺎن ﺟ ﺎوا ﯾ ﮏ ﺷ ﯽ ﻣﺤﺴ ﻮب ﻣﯿﺸ ﻮد .ﺣﺘ ﯽ در ﺻ ﻮرت ﻧﯿ ﺎز اﻧ ﻮاع داده
اوﻟﯿ ﮫ ﻧﯿ ﺰ ﻣﯿﺘﻮاﻧﻨ ﺪ در ﻗﺎﻟ ﺐ ﺷ ﯽ ﮐﭙﺴ ﻮﻟﮫ ) (encapsulateﺷ ﻮﻧﺪ .اﻧ ﻮاع داده ھ ﺎی اﺻ ﻠﯽ در زﺑ ﺎن ﺟ ﺎوا ﺷ ﺒﺎھﺖ
ﺑﺴ ﯿﺎر زﯾ ﺎدی ﺑ ﺎ اﻧ ﻮاع داده ھ ﺎی اﺳﺎﺳ ﯽ زﺑ ﺎن c++دارد .اﻧ ﻮاع داده اﭘﺘ ﺪاﯾﯽ در زﺑ ﺎن ﺟ ﺎوا ﻋﺒﺎرﺗﻨ ﺪ از :ﻧ ﻮع
ﻋﺪدی ،ﮐﺎراﮐﺘﺮی و ﺑﻮﻟﯿﻦ.
اﯾﻦ دﺳﺘﻮر ﯾﮏ ﻣﺘﻐﯿﺮ ﯾﻮﻧﯿﮑﺪ 16ﺑﯿﺘﯽ ﺗﻌﺮﯾﻒ ﻣﯿﮑﻨﺪ ﺗﺎ ﻣﻘﺪار ﯾﻮﻧﯿﮑﺪ ﮐﺎراﮐﺘﺮ Qرا در ﺧﻮد ﺟﺎی دھﺪ.
آراﯾﮫ ھﺎ
ﺑ ﺮﺧﻼف cو ،c++آراﯾ ﮫ ھ ﺎی زﺑ ﺎن ﺑﺮﻧﺎﻣ ﮫ ﻧﻮﯾﺴ ﯽ ﺟ ﺎوا ﮐﻼﺳ ﯽ از اﺷ ﯿﺎء ﺑﺸ ﻤﺎر ﻣﯿﺮوﻧ ﺪ .ﯾ ﮏ آراﯾ ﮫ در ﺟ ﺎوا
ﯾ ﮏ ﺷ ﯽ واﻗﻌ ﯽ اﺳ ﺖ ھﻤ ﺮاه ﺑ ﺎ ﻧﻤ ﺎﯾﺶ زﻣ ﺎن اﺟ ﺮا .ﻣﯿﺘ ﻮان آراﯾ ﮫ ھ ﺎ را از ھ ﺮ ﻧ ﻮﻋﯽ را اﻋ ﻼن ﯾ ﺎ ﺗﺨﺼ ﯿﺺ داد و
ھﻤﭽﻨﯿﻦ ﺑﺮای اﯾﺠﺎد آراﯾﮫ ھﺎی ﭼﻨﺪ ﺑﻌﺪی ﻣﯿﺘﻮان آرﯾﮫ ھﺎﯾﯽ از آراﯾﮫ ھﺎ را ﺗﺨﺼﯿﺺ داد.
7
;][Point myPoints
دﺳ ﺘﻮر ﻓ ﻮق mypointsرا ﺑ ﮫ ﻋﻨ ﻮان آراﯾ ﮫ ای ﺑ ﺪون ﻣﻘ ﺪاردھﯽ اوﻟﯿ ﮫ از ﻧ ﻮع ) pointsﮐﻼﺳ ﯽ ﮐ ﮫ ﻗ ﺒﻼ اﻋ ﻼن
ﺷ ﺪه اﺳ ﺖ( اﻋ ﻼن ﻣﯿﮑﻨ ﺪ .در اﯾ ﻦ ﻟﺤﻈ ﮫ ﺗﻨﮭ ﺎ ﻓﻀ ﺎﯾﯽ ﮐ ﮫ ﺑ ﮫ mypointsاﺧﺘﺼ ﺎص ﯾﺎﻓﺘ ﮫ اﺳ ﺖ ﯾ ﮏ ﻧﮕﮭﺪارﻧ ﺪه
ارﺟﺎع ﻣﯿﺒﺎﺷﺪ ) .(reference handleﺑﻨﺎﺑﺮاﯾﻦ در اداﻣﮫ ﻣﯿﺒﺎﯾﺴﺖ ﻣﻘﺪار ﻓﻀﺎی ﻣﻮرد ﻧﯿﺎز را اﺧﺘﺼﺎص داد:
اﯾﻦ دﺳﺘﻮر آراﯾﮫ ای از ده ارﺟﺎع را ﺑﮫ pointsﺗﺨﺼﯿﺺ ﻣﯿﺪھﺪ ﮐﮫ ﺑﮫ nullارﺟﺎع داده ﺷﺪه اﻧﺪ.
ﺗﻮﺟﮫ دارﯾﻢ ﮐﮫ اﯾﻦ ﺗﺨﺼﯿﺺ آراﯾﮫ واﻗﻌﺎ ﺷﯿﻌﯽ ﺑﺮای ﮐﻼس pointاﺧﺘﺼﺎص ﻧﻤﯿﺪھﺪ و ﻣﯿﺒﺎﯾﺴﺖ ھﻤﭽﻨﯿﻦ اﺷﯿﺎء pointرا
اﺧﺘﺼﺎص دھﯿﻢ:
;int i
{ )for (i = 0; i < 10; i++
;)(myPoints[i] = new Point
}
دﺳ ﺘﯿﺎﺑﯽ ﺑ ﮫ ﻋﻨﺎﺻ ﺮ mypointsﻣﯿﺘﻮاﻧ ﺪ از ﻃﺮﯾ ﻖ اﻧ ﺪﯾﺲ ﺑ ﮫ ﺷ ﯿﻮه cاﻧﺠ ﺎم ﺑﭙ ﺬﯾﺮد ،اﻣ ﺎ ﺗﻤ ﺎم دﺳ ﺘﯿﺎﺑﯽ ھ ﺎ
ﭼ ﮏ ﻣﯿﺸ ﻮﻧﺪ ﺗ ﺎ اﻃﻤﯿﻨ ﺎن ﺣﺎﺻ ﻞ ﺷ ﻮد ﮐ ﮫ ﺑ ﮫ ﻣﺤﻠ ﯽ در درون ﺑ ﺎزه آراﯾ ﮫ اﺷ ﺎره ﺷ ﺪه اﺳ ﺖ .در ﺻ ﻮرﺗﯽ ﮐ ﮫ اﻧ ﺪﯾﺲ
ﺧ ﺎرج از ﻣﺤ ﺪوده آراﯾ ﮫ ﺑﺎﺷ ﺪ ﯾ ﮏ اﺳ ﺘﺜﻨﺎء ) (exceptionﺗﻮﻟﯿ ﺪ ﻣﯿﺸ ﻮد .ﻃ ﻮل ھ ﺮ آراﯾ ﮫ در ﻣﺘﻐﯿ ﺮ ﻧﻤﻮﻧ ﮫ آراﯾ ﮫ
ﻣﺸﺨﺺ mypointsذﺧﯿﺮه ﻣﯿﺸﻮد Length .ﺷﺎﻣﻞ ﺗﻌﺪاد ﻋﻨﺎﺻﺮ در mypointsﻣﯿﺒﺎﺷﺪ.
;howMany = myPoints.length
رﺷﺘﮫ ھﺎ
رﺷ ﺘﮫ ھ ﺎ اﺷ ﯿﺎء زﺑ ﺎن ﺟ ﺎوا ﻣﺤﺴ ﻮب ﻣﯿﺸ ﻮﻧﺪ و ﺑ ﮫ ﻣﺎﻧﻨ ﺪ زﺑ ﺎن cرﺷ ﺘﮫ آراﯾ ﮫ ای از ﮐ ﺎراﮐﺘﺮ ﻣﺤﺴ ﻮب ﻧﻤﯿﺸ ﻮد .در
واﻗ ﻊ دو ﻧ ﻮع اﺷ ﯿﺎء رﺷ ﺘﮫ ای ﻣﻮﺟ ﻮد ﻣﯿﺒﺎﺷ ﺪ :ﮐ ﻼس ) stringﺑ ﺮای اﺷ ﯿﺎء رﺷ ﺘﮫ ای ﻓﻘ ﻂ ﺧﻮاﻧ ﺪﻧﯽ( و ﮐ ﻼس
) stringBufferﺑ ﺮای اﺷ ﯿﺎ رﺷ ﺘﮫ ای ﻗﺎﺑ ﻞ اﺻ ﻼح( .ﮔﺮﭼ ﮫ رﺷ ﺘﮫ ھ ﺎ اﺷ ﯿﺎء زﺑ ﺎن ﺟ ﺎوا ﺑ ﮫ ﺣﺴ ﺎب ﻣ ﯽ آﯾﻨ ﺪ،
ﮐﺎﻣﭙ ﺎﯾﻠﺮ ﺟ ﺎوا ﻧﺤ ﻮ ﺳ ﻨﺘﯽ زﺑ ﺎن cرا ﺑ ﺮای راﺣﺘ ﯽ ﺑﺮﻧﺎﻣ ﮫ ﻧﻮﯾﺴ ﺎن cدﻧﺒ ﺎل ﻣﯿﮑﻨ ﺪ .ﺑ ﮫ ﻋﻨ ﻮان ﻣﺜ ﺎل ،ﮐﺎﻣﭙ ﺎﯾﻠﺮ ﺟ ﺎوا
ﻣﯿﺪاﻧﺪ ﮐﮫ رﺷﺘﮫ ای از ﮐﺎراﮐﺘﺮھﺎ ﮐﮫ در داﺧﻞ ﮐﻮﺗﯿﺸﻦ ھﺎی دوﮔﺎﻧﮫ ﻣﺤﺼﻮر ﺷﺪه اﺳﺖ ﯾﮏ ﺷﯽ رﺷﺘﮫ ای اﺳﺖ.
8
;)"System.out.println("There are " + num + " characters in the file.
اﯾ ﻦ ﻗﻄﻌ ﮫ ﮐ ﺪ ،رﺷ ﺘﮫ " "There areرا ﺑ ﺎ ﻧﺘﯿﺠ ﮫ ﺗﺒ ﺪﯾﻞ ﻣﻘ ﺪار ﻋ ﺪدی numﺑ ﮫ رﺷ ﺘﮫ اﻟﺤ ﺎق ﻣﯿﮑﻨ ﺪ و ﺳ ﭙﺲ ﺑ ﺎ
رﺷ ﺘﮫ " " characters in the file.اﻟﺤ ﺎق ﻣﯿﮑﻨ ﺪ .درﻧﮭﺎﯾ ﺖ ﻧﺘﯿﺠ ﮫ اﯾ ﻦ اﻟﺤ ﺎق ھ ﺎ را در ﺧﺮوﺟ ﯽ اﺳ ﺘﺎﻧﺪارد
ﭼ ﺎپ ﻣﯿﮑﻨ ﺪ .اﺷ ﯿﺎء Stringﻣﺘ ﺪ دﺳ ﺘﯿﺎب )( lengthرا ﺟﮭ ﺖ ﺑﺪﺳ ﺖ آوردن ﺗﻌ ﺪاد ﮐﺎراﮐﺘﺮھ ﺎی رﺷ ﺘﮫ اراﺋ ﮫ
ﻣﯿﮑﻨﻨﺪ.
ﻗﻄﻌﮫ ﮐﺪ زﯾﺮ ﺑﺨﺶ ﮐﻮﭼﮑﯽ از ﮐﻼس ﺗﻮﮐﺎر stringدر زﺑﺎن ﺟﺎوا ﻣﯿﺒﺎﺷﺪ:
دﺳ ﺘﻮر continue testدر داﺧ ﻞ ﺣﻠﻘ ﮫ ای ﻗ ﺮار ﮔﺮﻓﺘ ﮫ اﺳ ﺖ ﮐ ﮫ ﺧ ﻮد آن ﺣﻠﻘ ﮫ در ﺣﻠﻘ ﮫ ای دﯾﮕ ﺮ واﻗ ﻊ ﺷ ﺪه
اﺳ ﺖ .ﺑﻮﺳ ﯿﻠﮫ ارﺟ ﺎع ﺑ ﮫ ﺑﺮﭼﺴ ﺐ ،testدﺳ ﺘﻮر continueﮐﻨﺘ ﺮل ﺑﺮﻧﺎﻣ ﮫ را ﺑ ﮫ ﺣﻠﻘ ﮫ ﺧ ﺎرﺟﯽ اﻧﺘﻘ ﺎل ﻣﯿﺪھ ﺪ.
دﺳ ﺘﻮر continueدر زﺑ ﺎن cﺗﻨﮭ ﺎ ﻣﯿﺘﻮاﻧ ﺪ ﺣﻠﻘ ﮫ ﺟ ﺎری را ﺑﻼﻓﺎﺻ ﻠﮫ اداﻣ ﮫ دھ ﺪ ،در اﯾ ﻦ ﺻ ﻮرت ﺑﺮﻧﺎﻣ ﮫ ﻧﻮﯾﺴ ﺎن
cﺑ ﺮای اداﻣ ﮫ ﯾ ﺎ ﺧ ﺮوج از ﺣﻠﻘ ﮫ ھ ﺎی ﺑﯿﺮوﻧ ﯽ ﻣ ﯽ ﺑﺎﯾﺴ ﺖ از ﻣﺘﻐﯿﺮھ ﺎی ﺑ ﻮﻟﯿﻦ ﮐﻤﮑ ﯽ ﮐ ﮫ ﺗﻨﮭ ﺎ ھﺪﻓﺸ ﺎن ﺗ ﺎﯾﯿﻦ اداﻣ ﮫ
ﯾ ﺎ ﻗﻄ ﻊ ﺣﻠﻘ ﮫ ﺑﯿﺮوﻧ ﯽ اﺳ ﺖ اﺳ ﺘﻔﺎده ﮐﻨﻨ ﺪ و ﯾ ﺎ اﯾﻨﮑ ﮫ ﺗﻮﺳ ﻂ دﺳ ﺘﻮر gotoﺑﺮﻧﺎﻣ ﮫ ﻏﯿﺮﺳ ﺎﺧﺖ ﯾﺎﻓﺘ ﮫ ﺧﻠ ﻖ ﮐﻨﻨ ﺪ .ﮐ ﺎرﺑﺮد
ﺑﻠﻮﮐﮭ ﺎی ﺑﺮﭼﺴ ﺐ دار در زﺑ ﺎن ﺟ ﺎوا ﻣﻨﺠ ﺮ ﺑ ﮫ ﺳ ﺎدﮔﯽ ﮐ ﺎر ﺑﺮﻧﺎﻣ ﮫ ﻧ ﻮﯾﺲ و ﮐ ﺎھﺶ ھﺰﯾﻨ ﮫ ﻧﮕﮭ ﺪاری ﻣﯿﺸ ﻮد .ﻧﻮﺗﯿﺸ ﻦ
ﺑﻠﻮﮐﮭ ﺎی ﺑﺮﭼﺴ ﺐ دار ﺑﺮﻣﯿﮕ ﺮدد ﺑ ﮫ اواﺳ ﻂ دھ ﮫ ،1970اﻣ ﺎ ﺑ ﮫ ﺻ ﻮرت ﮔﺴ ﺘﺮده در زﺑﺎﻧﮭ ﺎی ﻣ ﺪرن ﻣ ﻮرد اﺳ ﺘﻔﺎده
ﻗ ﺮار ﻧﮕﺮﻓ ﺖ .ﭘ ﺮل ﯾ ﮏ زﺑ ﺎن ﺑﺮﻧﺎﻣ ﮫ ﺳ ﺎزی ﻣ ﺪرن اﺳ ﺖ ﮐ ﮫ ﻣﻔﮭ ﻮم ﺑﻠﻮﮐﮭ ﺎی ﺑﺮﭼﺴ ﺐ دار را ﺑ ﮫ ﻧﺤ ﻮی ﭘﯿ ﺎده ﻧﻤ ﻮده
اﺳﺖ next ،و lastدر زﺑﺎن ﭘﺮل ھﻤﺎن دﺳﺘﻮرات continueو breakدر ﺟﺎوا ﻣﯿﺒﺎﺷﻨﺪ.
9
ﻣﺪﯾﺮﯾﺖ ﺣﺎﻓﻈﮫ و ﭘﺎﮐﺴﺎزی
ﺑﺮﻧﺎﻣ ﮫ ﻧﻮﯾﺴ ﺎن cھ ﻢ اﮐﻨ ﻮن ﺑ ﮫ ﻣﺸ ﮑﻼت ﻣ ﺪﯾﺮﯾﺖ ﺻ ﺮﯾﺢ ﺣﺎﻓﻈ ﮫ ﻋ ﺎدت ﮐ ﺮده اﻧ ﺪ :ﺗﺨﺼ ﯿﺺ ﺣﺎﻓﻈ ﮫ ،آزاد ﺳ ﺎزی
ﺣﺎﻓﻈ ﮫ و ﻧﮕﮭ ﺪاری رﮐ ﻮردی ﮐ ﮫ ﻧﺸ ﺎن ﻣﯿﺪھ ﺪ ﭼ ﮫ ﻣﻘ ﺪار ﺣﺎﻓﻈ ﮫ در دﺳ ﺘﺮس اﺳ ﺖ .ﻣ ﺪﯾﺮﯾﺖ ﺣﺎﻓﻈ ﮫ ﺑ ﮫ ﺷ ﮑﻞ ﺻ ﺮﯾﺢ
ﻋ ﺎﻣﻠﯽ اﺳ ﺖ ﺑ ﺮای ﺑﺎﮔﮭ ﺎ ،ﺑ ﮫ ھ ﻢ رﯾﺨﺘﮕ ﯽ ،memory leaks ،و ﻋﻤﻠﮑ ﺮد ﺿ ﻌﯿﻒ .ﺗﮑﻨﻮﻟ ﻮژی ﺟ ﺎوا ﺑ ﮫ ﻃ ﻮر ﮐﺎﻣ ﻞ
ﻣ ﺪﯾﺮﯾﺖ ﺣﺎﻓﻈ ﮫ را از اﺧﺘﯿ ﺎر ﺑﺮﻧﺎﻣ ﮫ ﻧ ﻮﯾﺲ ﺳ ﻠﺐ ﻧﻤ ﻮده اﺳ ﺖ .ﺧﺒ ﺮی از اﺷ ﺎره ﮔﺮھ ﺎی ﺷ ﺒﮫ ،cاﺷ ﺎره ﮔ ﺮ
ﻣﺤﺎﺳ ﺒﺎﺗﯽ malloc ،و freeﻧﯿﺴ ﺖ .ﭘﺎﮐﺴ ﺎزی اﺗﻮﻣﺎﺗﯿ ﮏ دﯾﮕ ﺮ ﺑﺨ ﺶ ﺟ ﺪاﯾﯽ ﻧﺎﭘ ﺬﯾﺮ ﺟ ﺎوا و ﺳﯿﺴ ﺘﻢ زﻣ ﺎن اﺟ ﺮای
آن ﻣﯿﺒﺎﺷ ﺪ .در ﺣﺎﻟﯿﮑ ﮫ ﺟ ﺎوا دارای ﻋﻤﻠﮕ ﺮ newﺟﮭ ﺖ ﺗﺨﺼ ﯿﺺ ﺣﺎﻓﻈ ﮫ ﺑ ﺮای اﺷ ﯿﺎء ﻣﯿﺒﺎﺷ ﺪ ،اﻣ ﺎ ﺗ ﺎﺑﻌﯽ ﺻ ﺮﯾﺢ ﺑ ﺎ
ﻧ ﺎم freeوﺟ ﻮد ﻧ ﺪارد .ھﻨﮕﺎﻣﯿﮑ ﮫ ﯾ ﮏ ﺷ ﯽ ﺗﺨﺼ ﯿﺺ ﻣﯿﺎﺑ ﺪ ﺳﯿﺴ ﺘﻢ زﻣ ﺎن اﺟ ﺮا رﮐ ﻮردی از وﺿ ﻌﯿﺖ اﺷ ﯿﺎء را
ﻧﮕﮭ ﺪاری ﻣﯿﮑﻨ ﺪ و ﺑ ﮫ ﺻ ﻮرت اﺗﻮﻣﺎﺗﯿ ﮏ ﺣﺎﻓﻈ ﮫ را ھﻨﮕﺎﻣﯿﮑ ﮫ اﺷ ﯿﺎء ﺑ ﺮای ﻣ ﺪﺗﯽ ﻃ ﻮﻻﻧﯽ ﻣ ﻮرد اﺳ ﺘﻔﺎده ﻧﺒﺎﺷ ﻨﺪ
ﭘﺎﮐﺴ ﺎزی ﻣﯿﮑﻨ ﺪ و در واﻗ ﻊ ﺣﺎﻓﻈ ﮫ را ﺑ ﺮای اﺳ ﺘﻔﺎده ھ ﺎی ﺑﻌ ﺪی آزاد ﻣﯿﮑﻨ ﺪ .ﻣ ﺪل ﻣ ﺪﯾﺮﯾﺖ ﺣﺎﻓﻈ ﮫ ﺗﮑﻨﻮﻟ ﻮژی ﺟ ﺎوا
ﺑﺮﭘﺎﯾ ﮫ اﺷ ﯿﺎء و ارﺟ ﺎع ھ ﺎ ﺑ ﮫ اﺷ ﯿﺎء ﻣﯿﺒﺎﺷ ﺪ .ﺟ ﺎوا اﺷ ﺎرﮔﺮ ﻧ ﺪارد ،در ﻋ ﻮض ﺗﻤ ﺎﻣﯽ ارﺟ ﺎع ھ ﺎ ﺑ ﮫ ﻓﻀ ﺎھﺎی
ﺗﺨﺼ ﯿﺺ داده ﺷ ﺪه )ﻣﻨﻈ ﻮر ارﺟ ﺎع ﺑ ﮫ اﺷ ﯿﺎء( ﺗﻮﺳ ﻂ دﺳ ﺘﮕﯿﺮه ھ ﺎی ) (handlesﻧﻤ ﺎدﯾﻦ ﺻ ﻮرت ﻣﯿﭙ ﺬﯾﺮد.
ﻣ ﺪﯾﺮﯾﺖ ﺣﺎﻓﻈ ﮫ ﺟ ﺎوا رﮐ ﻮردی از ارﺟ ﺎع ھ ﺎ ﺑ ﮫ ﺣﺎﻓﻈ ﮫ را ﻧﮕﮭ ﺪاری ﻣﯿﮑﻨ ﺪ ،ھﻨﮕﺎﻣﯿﮑ ﮫ ﯾ ﮏ ﺷ ﯽ ﻣ ﺪت زﯾ ﺎدی
ﻣ ﻮرد ارﺟ ﺎع ﻗ ﺮار ﻧﮕﯿ ﺮد ﺑ ﺮای ﺳﯿﺴ ﺘﻢ ﭘﺎﮐﺴ ﺎزی ﮐﺎﻧﺪﯾ ﺪ ﻣﯿﺸ ﻮد .ﺗﺨﺼ ﯿﺺ ﺣﺎﻓﻈ ﮫ و ﭘﺎﮐﺴ ﺎزی اﺗﻮﻣﺎﺗﯿ ﮏ در زﺑ ﺎن
ﺟ ﺎوا وﻇﯿﻔ ﮫ ﺑﺮﻧﺎﻣ ﮫ ﻧ ﻮﯾﺲ را ﺳ ﺎده ﺗ ﺮ ﻣﯿﺴ ﺎزد ،در واﻗ ﻊ ﻋﻤﻠﮑ ﺮد ﺑﮭﺘ ﺮی ﻧﺴ ﺒﺖ ﺑ ﮫ ﻣ ﺪﯾﺮﯾﺖ ﺣﺎﻓﻈ ﮫ ﺑ ﮫ ﺻ ﻮرت
ﺻﺮﯾﺢ ﺑﮫ دﻟﯿﻞ از ﺑﯿﻦ رﻓﺘﻦ ﺑﺎﮔﮭﺎ ﻓﺮاھﻢ ﻣﯿﺸﻮد.
{ class ReverseString
{ )public static String reverseIt(String source
;)(int i, len = source.length
;)StringBuffer dest = new StringBuffer(len
ﻣﺘﻐﯿ ﺮ destﺑ ﮫ ﻋﻨ ﻮان ﯾ ﮏ ﺷ ﯽ ﮐﻤﮑ ﯽ در ﺧ ﻼل اﺟ ﺮای ﻣﺘ ﺪ reverseItﻣ ﻮرد اﺳ ﺘﻔﺎده اﺳ ﺖ .ﭘ ﺲ از
ﺑﺎزﮔﺸ ﺖ از ﻣﺘ ﺪ reverseItارﺟ ﺎع ﺑ ﮫ ﺷ ﯽ destﺑ ﺎ ﺷﮑﺴ ﺖ ﻣﻮاﺟ ﮫ ﻣﯿﺸ ﻮد و ﺑ ﮫ ﻋﺒ ﺎرﺗﯽ ﭼ ﻮن داﻣﻨ ﮫ destﺑ ﮫ
ﭘﺎﯾﺎن رﺳﯿﺪه اﺳﺖ ﺑﺮای ﭘﺎﮐﺴﺎزی ) (garbage collectionﮐﺎﻧﺪﯾﺪ ﻣﯿﺸﻮد.
ﺳﯿﺴ ﺘﻢ زﻣ ﺎن اﺟ ﺮای ﺟ ﺎوا ﻋﻤﻠﯿ ﺎت ﭘﺎﮐﺴ ﺎزی را در ﻏﺎﻟ ﺐ ﯾ ﮏ رﯾﺴ ﻤﺎن ﺑ ﺎ اوﻟﻮﯾ ﺖ ﭘ ﺎﯾﯿﻦ ھﻨﮕﺎﻣﯿﮑ ﮫ دﯾﮕ ﺮ رﯾﺴ ﻤﺎﻧﮭﺎ
ﺑ ﺮای ﺑﺪﺳ ﺖ آوردن ﺳ ﯿﮑﻠﮭﺎی ﭘﺮدازﻧ ﺪه رﻗﺎﺑ ﺖ ﻧﻤﯿﮑﻨﻨ ﺪ اﺟ ﺮا ﻣﯿﮑﻨ ﺪ .ﻋﻤﻠﯿ ﺎت ﭘﺎﮐﺴ ﺎزی ﻣﮑﺎﻧﮭ ﺎی ﺑ ﯽ اﺳ ﺘﻔﺎده ﺣﺎﻓﻈ ﮫ
را ﺟﻤ ﻊ و ﻓﺸ ﺮده ﻣﯿﺴ ﺎزد ﺗ ﺎ ﺗﻀ ﻤﯿﻦ ﮐﻨ ﺪ ﺣﺎﻓﻈ ﮫ ﮐ ﺎﻓﯽ ﻣ ﻮرد ﻧﯿ ﺎز در ﺧ ﻼل زﻣﺎﻧﮭ ﺎﯾﯽ ﮐ ﮫ ﻓﺮاﯾﻨ ﺪھﺎی ﻣﺤ ﺎوره ای
ﺳ ﻨﮕﯿﻦ ﻣ ﻮرد اﺳ ﺘﻔﺎده ھﺴ ﺘﻨﺪ در دﺳ ﺘﺮس ﻣﯿﺒﺎﺷ ﺪ .ﺗﮑﻨﻮﻟ ﻮژی ﺟ ﺎوا ﭼﻨ ﺪ رﯾﺴ ﻤﺎﻧﯽ را ھ ﻢ در ﺳ ﻄﺢ ﻧﺤ ﻮی زﺑ ﺎن وھ ﻢ
ﺑﻮﺳﯿﻠﮫ ﺳﯿﺴﺘﻢ زﻣﺎن اﺟﺮا ﻣﻮرد ﭘﺸﺘﯿﺒﺎﻧﯽ ﻗﺮار ﻣﯿﺪھﺪ.
10
ﺗﮑﻨﻮﻟﻮژی ﺷﯽ ﮔﺮا
ﺗﮑﻨﻮﻟ ﻮژی ﺷ ﯽ ﺑ ﮫ ﻃ ﻮر ﺳ ﺎده ﮐﻠﮑﺴ ﯿﻮﻧﯽ از ﻃﺮاﺣ ﯽ ،ﺗﺤﻠﯿ ﻞ و ﻣﺘ ﺪوﻟﻮژی ھ ﺎی ﺑﺮﻧﺎﻣ ﮫ ﻧﻮﯾﺴ ﯽ اﺳ ﺖ ﮐ ﮫ ﺑ ﺮ روی
ﻣﺪﻟﺴ ﺎزی وﯾﮋﮔﯿﮭ ﺎ و رﻓﺘ ﺎر اﺷ ﯿﺎء در دﻧﯿ ﺎی واﻗ ﯽ ﻣﺘﻤﺮﮐ ﺰ ﺷ ﺪه اﺳ ﺖ .اﺷ ﯿﺎء ﻣ ﺪﻟﮭﺎی ﺑﺮﻧﺎﻣ ﮫ ﻧﻮﯾﺴ ﯽ ﻧ ﺮم اﻓ ﺰار
ﻣﯿﺒﺎﺷﻨﺪ .ﯾﮏ زﺑﺎن ﺷﯽ ﮔﺮا ﻣﯿﺒﺎﯾﺴﺖ ﺣﺪاﻗﻞ ﭼﮭﺎر وﯾﮋﮔﯽ زﯾﺮ را ﭘﺸﺘﺒﺎﻧﯽ ﻧﻤﺎﯾﺪ:
ﺟ ﺎوا ﺟﮭ ﺖ ﺗﺴ ﮭﯿﻞ ﺗﻮﺳ ﻌﮫ ﻧ ﺮم اﻓ ﺰار اﯾ ﻦ ﻧﯿﺎزﻣﻨ ﺪﯾﮭﺎ را ﺑ ﮫ زﯾﺒ ﺎﯾﯽ ﻣ ﺪﻧﻈﺮ ﻗ ﺮار ﻣﯿﺪھ ﺪ و ھﻤﭽﻨ ﯿﻦ ﭘﺸ ﺘﯿﺒﺎﻧﯽ زﻣ ﺎن
اﺟﺮا را ﺑﮫ ﺻﻮرت ﻗﺎﺑﻞ ﺗﻮﺟﮭﯽ ﻣﻮرد ھﺪف ﻗﺮار داده اﺳﺖ.
11
رﻓﺘ ﺎر ﯾ ﮏ ﺷ ﯽ ﺗﻮﺳ ﻂ ﻣﺘ ﺪھﺎﯾﺶ ﺗﻌﺮﯾ ﻒ ﻣﯿﺸ ﻮد .ﻣﺘ ﺪھﺎ ﻣﺘﻐﯿﺮھ ﺎ را ﺑ ﺮای اﯾﺠ ﺎد وﺿ ﻌﯿﺖ ﺟﺪﯾ ﺪ دﺳ ﺘﮑﺎری ﻣﯿﮑﻨﻨ ﺪ;
ﻣﺘ ﺪ ﯾ ﮏ ﺷ ﯽ ھﻤﭽﻨ ﯿﻦ ﻣﯿﺘﻮاﻧ ﺪ اﺷ ﯿﺎء ﺟﺪﯾ ﺪ را ﺧﻠ ﻖ ﮐﻨ ﺪ .دﯾ ﺎﮔﺮام ﺑ ﺎﻻ ﻧﻤ ﺎی ﮔﺮاﻓﯿﮑ ﯽ ﺳ ﺎﺧﺘﺎر ﻣﻔﮭ ﻮﻣﯽ ﯾ ﮏ ﺷ ﯽ ﻧ ﺮم
اﻓ ﺰار را ﻧﺸ ﺎن ﻣﯿﺪھ ﺪ ،اﯾ ﻦ ﺷ ﯽ ﺷ ﺒﯿﮫ ﺑ ﮫ ﯾ ﮏ ﺳ ﻠﻮل اﺳ ﺖ ﮐ ﮫ داری راﺑﻄ ﯽ ﺧ ﺎرﺟﯽ ﺟﮭ ﺖ ارﺗﺒ ﺎط ﺑ ﺎ ﻣﺤ ﯿﻂ و ﯾ ﮏ
ھﺴﺘﮫ داﺧﻠﯽ ﻣﯿﺒﺎﺷﺪ ﮐﮫ در ﺑﺮاﺑﺮ ﻋﻮاﻣﻞ ﺧﺎرﺟﯽ ﻣﺤﺎﻓﻈﺖ ﺷﺪه اﺳﺖ.
ﮐﻼس ھﺎ
ﮐ ﻼس ﺳ ﺎﺧﺘﺎری ﻧ ﺮم اﻓ ﺰاری اﺳ ﺖ ﮐ ﮫ داده ھ ﺎ )وﺿ ﻌﯿﺖ( و ﻣﺘ ﺪھﺎی )رﻓﺘ ﺎر( اﺷ ﯿﺎء ﺧﺎﺻ ﯽ ﮐ ﮫ ﻣﺘﻌﺎﻗﺒ ﺎ ﺗﻮﺳ ﻂ
ﮐ ﻼس اﯾﺠ ﺎد ﻣﯿﺸ ﻮﻧﺪ را ﺗﻌﺮﯾ ﻒ ﻣﯿﮑﻨ ﺪ .در اﺻ ﻄﻼﺣﺎت ﺟ ﺎوا ،ﮐ ﻼس ﺗﻮﺳ ﻂ ﻋﻀ ﻮھﺎﯾﯽ ﺳ ﺎﺧﺘﮫ ﻣﯿﺸ ﻮد ﮐ ﮫ ﯾ ﺎ ﻓﯿﻠ ﺪ
ﻣﯿﺒﺎﺷ ﻨﺪ و ﯾ ﺎ ﻣﺘ ﺪ .ﻓﯿﻠ ﺪھﺎ داده ھ ﺎی ﮐ ﻼس ﻣﯿﺒﺎﺷ ﻨﺪ و ﻣﺘ ﺪھﺎ ﺳﻠﺴ ﻠﮫ ای از دﺳ ﺘﻮرات ﻣﯿﺒﺎﺷ ﻨﺪ ﮐ ﮫ ﺑ ﺮ روی داده ھ ﺎ
ﻋﻤ ﻞ ﻣﯿﮑﻨﻨ ﺪ .ﻓﯿﻠ ﺪھﺎ ﻣﺸﺨﺼ ﮫ ھ ﺮ ﺷ ﯽ ﻣﯿﺒﺎﺷ ﻨﺪ ،ﯾﻌﻨ ﯽ ھ ﺮ ﺷ ﯿﻌﯽ ﮐ ﮫ ﺗﻮﺳ ﻂ ﺗﻌﺮﯾ ﻒ ﮐ ﻼس اﯾﺠ ﺎد ﻣﯿﺸ ﻮد دارای ﯾ ﮏ
ﮐﭙ ﯽ ﻣﺨﺼ ﻮص ﺑ ﮫ ﺧ ﻮد از ﻓﯿﻠ ﺪھﺎ ﻣﯿﺒﺎﺷ ﺪ .اﯾ ﻦ ﻗﺒﯿ ﻞ ﻓﯿﻠ ﺪھﺎ ﺑ ﺎ ﻧ ﺎم ﻣﺘﻐﯿﺮھ ﺎی ﻧﻤﻮﻧ ﮫ ای ﺷ ﻨﺎﺧﺘﮫ ﻣﯿﺸ ﻮﻧﺪ .ﺑ ﮫ ﻃ ﻮر
ﻣﺸ ﺎﺑﮫ ،ﻣﺘ ﺪھﺎ اﻋ ﻼن ﺷ ﺪه اﻧ ﺪ ﺗ ﺎ ﺑ ﺮ روی ﻣﺘﻐﯿﺮھ ﺎی ﻧﻤﻮﻧ ﮫ ای ﮐ ﻼس ﻋﻤﻠﯿ ﺎت اﻧﺠ ﺎم دھﻨ ﺪ و ﺑﻨ ﺎﺑﺮاﯾﻦ ﺑ ﺎ ﻧ ﺎم ﻣﺘ ﺪھﺎی
ﻧﻤﻮﻧ ﮫ ای ﺷ ﻨﺎﺧﺘﮫ ﻣﯿﺸ ﻮﻧﺪ .ﮐ ﻼس ﺑ ﮫ ﺧ ﻮدی ﺧ ﻮد ﯾ ﮏ ﺷ ﯽ ﻣﺤﺴ ﻮب ﻧﻤﯿﺸ ﻮد ،در واﻗ ﻊ ﯾ ﮏ ﮐ ﻼس ﺷ ﺒﯿﮫ ﯾ ﮏ ﻧﻘﺸ ﮫ
ﯾ ﺎ ﻧﻤ ﺎی ﮐﻠ ﯽ اﺳ ﺖ ﮐ ﮫ ﻣﺸ ﺨﺺ ﻣﯿﮑﻨ ﺪ ﯾ ﮏ ﺷ ﯽ ھﻨﮕﺎﻣﯿﮑ ﮫ ﺗﻮﺳ ﻂ اﻋﻼﻧ ﯽ ﺧ ﺎص از ﮐ ﻼس اﯾﺠ ﺎد ﻣﯿﺸ ﻮد ﭼﮕﻮﻧ ﮫ ﺑ ﮫ
ﻧﻈ ﺮ ﻣﯿﺮﺳ ﺪ و ﭼﮕﻮﻧ ﮫ رﻓﺘ ﺎر ﻣﯿﮑﻨ ﺪ .اﺷ ﯿﺎء واﻗﻌ ﯽ ﺑﻮﺳ ﯿﻠﮫ ﮐﻼﺳ ﮭﺎی ﺗﻌﺮﯾ ﻒ ﺷ ﺪه اﯾﺠ ﺎد ﻣﯿﺸ ﻮﻧﺪ .ﺗﻮﺳ ﻂ ﯾ ﮏ ﮐ ﻼس
ﺗﻌﺮﯾﻒ ﺷﺪه ﻣﯿﺘﻮان اﺷﯿﺎء ﺑﺴﯿﺎری را اﯾﺠﺎد ﻧﻤﻮد.
12
:point ﯾﮏ ﻧﻤﻮﻧﮫ ﺳﺎزی از ﮐﻼس
: ﺑﻮﺳﯿﻠﮫ ارﺟﺎع ﺑﮫ ﻧﺎم ﻣﺘﻐﯿﺮھﺎ دﺳﺖ ﭘﯿﺪا ﻧﻤﻮدpoint ﺣﺎل ﻣﯿﺘﻮان ﺑﮫ ﻣﺘﻐﯿﺮھﺎی اﯾﻦ ﺷﯽ
myPoint.x = 10.0;
myPoint.y = 25.7
ﺳﺎزﻧﺪه ھﺎ
ﻣﯿﺘ ﻮان ﺳ ﺎزﻧﺪه ھ ﺎی اﺧﺘﯿ ﺎری را ﮐ ﮫ ﻣﺘﻐﯿﺮھ ﺎی ﻧﻤﻮﻧ ﮫ ای را در ھﻨﮕ ﺎم ﻧﻤﻮﻧ ﮫ،ھﻨﮕ ﺎم اﻋ ﻼن ﯾ ﮏ ﮐ ﻼس در ﺟ ﺎوا
.ﺳﺎزی ﺷﯽ از ﮐﻼس ﻣﻘﺪاردھﯽ اوﻟﯿﮫ ﻣﯿﮑﻨﻨﺪ اﻋﻼن ﻧﻤﻮد
ﻣﺘ ﺪ،point ھﻨﮕ ﺎم اﯾﺠ ﺎد ﯾ ﺎ ﻧﻤﻮﻧ ﮫ ﺳ ﺎزی ﯾ ﮏ ﺷ ﯽ از ﮐ ﻼس.ﻣﺘ ﺪھﺎی ھﻤﻨ ﺎم ﺑ ﺎ ﻧ ﺎم ﮐ ﻼس ﺳ ﺎزﻧﺪه ھ ﺎ ﻧ ﺎم دارﻧ ﺪ
ﺳ ﺎزﻧﺪه ﺟﮭ ﺖ اﻧﺠ ﺎم ﻋﻤﻠﯿ ﺎت ﻣﻘ ﺪاردھﯽ اوﻟﯿ ﮫ ﻣ ﻮرد ﻧﯿ ﺎز ﺑ ﺮای ﻧﮕﮭ ﺪاری ﺷ ﯽ در ﯾ ﮏ وﺿ ﻌﯿﺖ اوﻟﯿ ﮫ ﻓﺮاﺧ ﻮاﻧﯽ
.ﻣﯿﺸﻮد
13
;Point lowerLeft
;Point upperRight
;)(lowerLeft = new Point * /* initialize to default zero value
upperRight = new Point(100.0, 200.0); /* initialize to non- zero */
ﺳ ﺎزﻧﺪه ای ﮐ ﮫ ھﻨﮕ ﺎم اﯾﺠ ﺎد ﯾ ﮏ ﺷ ﯽ ﺟﺪﯾ ﺪ pointﻓﺮاﺧ ﻮاﻧﯽ ﻣﯿﺸ ﻮد واﺑﺴ ﺘﮫ ﺑ ﮫ ﻧ ﻮع و ﺗﻌ ﺪاد ﭘﺎراﻣﺘﺮھ ﺎ ھﻨﮕ ﺎم
اﺣﻀﺎر newﻣﯿﺒﺎﺷﺪ.
ﺳ ﻮال اﯾﻨﮑ ﮫ ﻣﻨﻈ ﻮر از ﻣﺘﻐﯿ ﺮ thisدر ﻣﺜ ﺎل ﻓ ﻮق ﭼﯿﺴ ﺖ؟ thisاﺷ ﺎرﮔﺮی اﺳ ﺖ ﮐ ﮫ ﺑ ﮫ ﺷ ﯽ ﺟ ﺎری اﺷ ﺎره ﻣﯿﮑﻨ ﺪ.
ﺑﻨ ﺎﺑﺮاﯾﻦ در ﻣﺘ ﺪ دو ﭘ ﺎراﻣﺘﺮی pointﻣﻨﻈ ﻮر از this.xﻣﺘﻐﯿ ﺮ ﻧﻤﻮﻧ ﮫ ای xاز ﺷ ﯽ ﺟ ﺎری ﻣﯿﺒﺎﺷ ﺪ ،ﻧ ﮫ ﭘ ﺎراﻣﺘﺮ x
ﮐ ﮫ ﺑ ﮫ ﻣﺘ ﺪ pointارﺳ ﺎل ﻣﯿﺸ ﻮد .در ﻣﺜ ﺎل ﻗﺒﻠ ﯽ از ﺳ ﺎزﻧﺪه ھ ﺎ ﺗﻨﮭ ﺎ ﺟﮭ ﺖ راﺣﺘ ﯽ ﮐ ﺎر اﺳ ﺘﻔﺎده ﮐ ﺮدﯾﻢ ،اﻣ ﺎ ﻣ ﻮاﻗﻌﯽ
وﺟ ﻮد دارد ﮐ ﮫ ﺳ ﺎزﻧﺪه ھ ﺎ ﺿ ﺮوری ﻣﯿﺒﺎﺷ ﻨﺪ ،ﻣﺨﺼﻮﺻ ﺎ ھﻨﮕﺎﻣﯿﮑ ﮫ اﺷ ﯿﺎﻋﯽ ﮐ ﮫ ﻧﻤﻮﻧ ﮫ ﺳ ﺎزی ﻣﯿﺸ ﻮﻧﺪ ﻣﯿﺒﺎﯾﺴ ﺖ
ﺧﻮدﺷﺎن اﺷﯿﺎء دﯾﮕﺮی را ﻧﻤﻮﻧﮫ ﺳﺎزی ﻧﻤﺎﯾﻨﺪ:
{ )(Rectangle
;)(lowerLeft = new Point
;)(upperRight = new Point
}
...
instance methods appear in here
...
}
در اﯾ ﻦ ﻣﺜ ﺎل ﮐ ﻼس Rectangleﺟﮭ ﺖ ﺗﻌﺮﯾ ﻒ ﺣ ﺪود از دو ﺷ ﯽ pointاﺳ ﺘﻔﺎده ﻣﯿﮑﻨ ﺪ .ﺑﻨ ﺎﺑﺮاﯾﻦ ﺑ ﺮای اﻃﻤﯿﻨ ﺎن
ازاﯾﻨﮑ ﮫ اﺷ ﯿﺎء pointدر ﻟﺤﻈ ﮫ اﯾﺠ ﺎد ﺷ ﯽ Rectangleﻧﻤﻮﻧ ﮫ ﺳ ﺎزی ﺷ ﺪه اﻧ ﺪ وﺟ ﻮد ﺳ ﺎزﻧﺪه ﺑ ﺮای Rectangle
ﺿﺮوری ﺑﮫ ﻧﻈﺮ ﻣﯿﺮﺳﺪ ،در ﻏﯿﺮ اﯾﻨﺼﻮرت ﻣﺴﺌﻠﮫ ﺑﮫ ﻣﺸﮑﻞ ﺑﺮﻣﯿﺨﻮرد و در ﻧﮭﺎﯾﺖ ﺑﺎ ﺷﮑﺴﺖ روﺑﺮو ﻣﯿﺸﻮد.
14
اﮔ ﺮ ﺷ ﯿﻌﯽ از دﯾﮕ ﺮ اﺷ ﯿﺎء درﺧﻮاﺳ ﺖ ﮐﻨ ﺪ ﺗ ﺎ ﺑﺮﺧ ﯽ ﮐﺎرھ ﺎ را ﺑ ﺮاﯾﺶ اﻧﺠ ﺎم دھ ﺪ ،ﺑﻨ ﺎﺑﺮ ﺳﯿﺴ ﺘﻢ ﻣﺤ ﺎوره در ﺑﺮﻧﺎﻣ ﮫ
ﻧﻮﯾﺴ ﯽ ﺷ ﯽ ﮔ ﺮا ،ﺷ ﯽ ﻧﺨﺴ ﺖ ﭘﯿ ﺎﻣﯽ را ﺑ ﮫ ﺷ ﯽ دوم ﻣﯿﻔﺮﺳ ﺘﺪ و ﺳ ﭙﺲ ﺷ ﯽ دوم ﻣﺘ ﺪ ﺧﺎﺻ ﯽ را ﺑ ﺮای ﻓﺮاﺧ ﻮاﻧﯽ
ﺑﺮﻣﯿﮕﺰﯾﻨ ﺪ .ﺑ ﺎ اﺳ ﺘﻔﺎده از ﭘ ﺎراداﯾﻢ ارﺳ ﺎل ﭘﯿ ﺎم در ﺑﺮﻧﺎﻣ ﮫ ﻧﻮﯾﺴ ﯽ ﺷ ﯽ ﮔ ﺮا ﻣﯿﺘ ﻮان اﺷ ﯿﺎﻋﯽ ﺑ ﺮ روی وب ﯾ ﺎ ﺷ ﺒﮑﮫ ھ ﺎ
ﺳ ﺎﺧﺖ ﮐ ﮫ ﺟﮭ ﺖ ﺗﻘﯿﯿ ﺮ وﺿ ﻌﯿﺖ از ﺳﯿﺴ ﺘﻢ ارﺳ ﺎل ﭘﯿ ﺎم ﻣ ﺎﺑﯿﻦ اﺷ ﯿﺎء اﺳ ﺘﻔﺎده ﻣﯿﺸ ﻮد .اﯾ ﻦ ﺗﮑﻨﯿ ﮏ ﺑﺮﻧﺎﻣ ﮫ ﻧﻮﯾﺴ ﯽ ﯾﮑ ﯽ
از ﺑﮭﺘﺮﯾﻦ ﺷﯿﻮه ھﺎی اﯾﺠﺎد ﻣﺪﻟﮭﺎ و ﺷﺒﯿﮫ ﺳﺎزی ﺳﯿﺴﺘﻤﮭﺎی ﭘﯿﭽﯿﺪه در دﻧﯿﺎی واﻗﻌﯽ ﻣﯿﺒﺎﺷﺪ.
اﯾ ﻦ ﻣﺘ ﺪھﺎ ﻧﺸ ﺎن ﻣﯿﺪھﻨ ﺪ ﮐ ﮫ ﭼﮕﻮﻧ ﮫ ﮐ ﻼس pointدﺳ ﺘﯿﺎﺑﯽ ﺑ ﮫ ﻣﺘﻐﯿﺮھ ﺎی ﺧﺼﻮﺻ ﯽ را از ﺧ ﺎرج ﮐ ﻼس ﻣﻤﮑ ﻦ
ﻣﯿﺴ ﺎزد .ﺑﻨ ﺎﺑﺮاﯾﻦ اﺷ ﯿﺎﻋﯽ ﮐ ﮫ ﻣﯿﺨﻮاھﻨ ﺪ ﻣﺘﻐﯿﺮھ ﺎی ﻧﻤﻮﻧ ﮫ ای را دﺳ ﺘﮑﺎری ﮐﻨﻨ ﺪ ﻣﯿﺒﺎﯾﺴ ﺖ از ﻃﺮﯾ ﻖ ﻣﺘ ﺪھﺎی
دﺳﺘﯿﺎب ﻋﻤﻞ ﮐﻨﻨﺪ.
Point ;myPoint // declares a variable to refer to a Point object
;)(myPoint = new Point // allocates an instance of a Point object
;)myPoint.setX(10.0 // sets the x variable via the accessor method
;)myPoint.setY(25.7
15
( ﻣﯿﺨﻮاھ ﺪ ﺷ ﯿﻌﯽgarbage collector) ﯾ ﮏ ﭘﺎﯾ ﺎن دھﻨ ﺪه اﺧﺘﯿ ﺎری ﺟﮭ ﺖ ﻋﻤﻠﯿ ﺎت ﺗﻔﮑﯿ ﮏ ھﻨﮕﺎﻣﯿﮑ ﮫ زﺑﺎﻟ ﮫ روب
:را آزاد ﺳﺎزد ﻣﯿﺘﻮاﻧﺪ اﻋﻼن ﺷﻮد
/**
* Close the stream when garbage is collected.
*/
protected void finalize() {
try {
file.close();
} catch (Exception e) {
}
}
ﺑ ﮫ اﯾ ﻦ ﻣﻌﻨ ﯽ ﮐ ﮫ ﺷ ﯽ،ﻣﺘ ﺪ ﭘﺎﯾ ﺎن دھﻨ ﺪه ھﻨﮕﺎﻣﯿﮑ ﮫ ﺷ ﯽ در ﻣﻌ ﺮض آزاد ﺳ ﺎزی ﻗ ﺮار ﻣﯿﮕﯿ ﺮد ﻓﺮاﺧ ﻮاﻧﯽ ﻣﯿﺸ ﻮد
در ﮐ ﺪ ﺑ ﺎﻻ ﻣﺘ ﺪ ﭘﺎﯾ ﺎن دھﻨ ﺪه ﺻ ﺮﻓﺎ اﺳ ﺘﺮﯾﻢ.ﻣﯿﺒﺎﯾﺴ ﺖ ﺑ ﺎ ﺗﻮﺟ ﮫ ﺑ ﮫ ﯾ ﮏ ﺷ ﯿﻮه ﻣ ﻨﻈﻢ ﺣﺎﻓﻈ ﮫ ﺗﺨﺼﯿﺼ ﯽ را آزاد ﻧﻤﺎﯾ ﺪ
ﺑﻨ ﺎﺑﺮاﯾﻦ ﺗﻮﺻ ﯿﻒ ﮐﻨﻨ ﺪه ﻓﺎﯾ ﻞ ﺑ ﺮای اﺳ ﺘﻔﺎده،ﺧﺮوﺟ ﯽ را ﮐ ﮫ ﺗﻮﺳ ﻂ ﺷ ﯽ ﻣ ﻮرد اﺳ ﺘﻔﺎده ﺑ ﻮد ﻣﯿﺒﻨ ﺪد/ﻓﺎﯾ ﻞ ورودی
.ﺑﻌﺪی در دﺳﺘﺮس اﺳﺖ
:ﺟﺎوا دارای ﻣﮑﺎﻧﯿﺴﻤﯽ اﺳﺖ ﮐﮫ ﻣﯿﺘﻮان اﺷﯿﺎء ﺟﺪﯾﺪ را ﺗﻮﺳﻂ اﺷﯿﺎء ﻣﻮﺟﻮد اﯾﺠﺎد ﻧﻤﻮد
class Point extends Object {
protected double x; /* instance variable */
protected double y; /* instance variable */
16
ﮐﻠﻤ ﮫ ﮐﻠﯿ ﺪی extendsﺑ ﮫ ﮐﺎﻣﭙ ﺎﯾﻠﺮ ﺟ ﺎوا ﻣﯿﮕﻮﯾ ﺪ ﮐ ﮫ ThreePointزﯾﺮﮐﻼﺳ ﯽ از pointاﺳ ﺖ .ﻣﺸ ﺎھﺪه ﻣﯿﺸ ﻮد
ﮐ ﮫ در ﮐ ﻼس pointﻣﺘﻐﯿﺮھ ﺎی ﻧﻤﻮﻧ ﮫ ای ﺑ ﮫ ﺻ ﻮرت ﻣﺤﺎﻓﻈ ﺖ ﺷ ﺪه اﻋ ﻼن ﻧﻤ ﻮده ﯾ ﻢ و ﻧ ﮫ ﺧﺼﻮﺻ ﯽ ،زﯾ ﺮا زﯾ ﺮ
ﮐﻼﺳ ﮭﺎ ﻧﯿ ﺰ ﻧﻤﯿﺘﻮاﻧﻨ ﺪ ﺑ ﮫ اﻋﻀ ﺎء ﺧﺼﻮﺻ ﯽ ﯾ ﮏ ﮐ ﻼس دﺳﺘﺮﺳ ﯽ داﺷ ﺘﮫ ﺑﺎﺷ ﻨﺪ .ﺗﻤ ﺎﻣﯽ ﮐﻼﺳ ﮭﺎ در ﺟ ﺎوا در ﻧﮭﺎﯾ ﺖ
از Objectارث ﻣﯿﺒﺮﻧﺪ ،زﯾﺮا Objectﻋﻤﻮﻣﯽ ﺗﺮﯾﻦ ﮐﻼس ﺑﺸﻤﺎر ﻣﯽ آﯾﺪ.
17
ﺳﺎﺧﺘﻤﺎن داده ھﺎ در ﺟﺎوا
ﻣﺘﻐﯿﺮھﺎ
ﻣﺘﻐﯿ ﺮ اﯾ ﺪه ای اﺳ ﺖ اﻧﺘﺰاﻋ ﯽ در زﺑ ﺎن ﺑﺮﻧﺎﻣ ﮫ ﻧﻮﯾﺴ ﯽ ﮐ ﮫ ﯾ ﮏ ﻣﮑ ﺎن ذﺧﯿ ﺮه ﺳ ﺎزی را ﻧﺸ ﺎن ﻣﯿﺪھ ﺪ .ﯾ ﮏ ﻣﺘﻐﯿ ﺮ
زﺑ ﺎن ﺟ ﺎوا دارای ﺧﺼﻮﺻ ﯿﺎﺗﯽ ﻣﯿﺒﺎﺷ ﺪ :ﻧ ﺎم )ﺑﺮﭼﺴ ﺐ ﻣ ﻮرد اﺳ ﺘﻔﺎده ﺟﮭ ﺖ ﺷﻨﺎﺳ ﺎﯾﯽ ﯾ ﮏ ﻣﺘﻐﯿ ﺮ در ﻣ ﺘﻦ ﺑﺮﻧﺎﻣ ﮫ( –
ﻧ ﻮع ) ﻧ ﻮع ﯾ ﮏ ﻣﺘﻐﯿ ﺮ ﻣﺠﻤﻮﻋ ﮫ ﻣﻘ ﺎدﯾﺮ و ﻣﺠﻤﻮﻋ ﮫ ﻋﻤﻠﯿ ﺎﺗﯽ ﮐ ﮫ ﻣﯿﺘﻮاﻧ ﺪ ﺑ ﺮ روی ﻣﺘﻐﯿ ﺮ اﻋﻤ ﺎل ﺷ ﻮد را ﺗ ﺎﯾﯿﻦ
ﻣﯿﮑﻨ ﺪ( – ﻣﻘ ﺪار )ﻣﻘ ﺪار ﯾ ﮏ ﻣﺘﻐﯿ ﺮ ﻣﺤﺘ ﻮای ﻣﮑ ﺎن ﺣﺎﻓﻈ ﮫ ای اﺳ ﺖ ﮐ ﮫ ﺑﻮﺳ ﯿﻠﮫ ﻣﺘﻐﯿ ﺮ اﺷ ﻐﺎل ﺷ ﺪه اﺳ ﺖ .ﭼﮕ ﻮﻧﮕﯽ
ﺗﻔﺴ ﯿﺮ ﻣﺤﺘﻮﯾ ﺎت ﻣﮑ ﺎن ھ ﺎی ﺣﺎﻓﻈ ﮫ ﺗﻮﺳ ﻂ ﻧ ﻮع ﻣﺘﻐﯿ ﺮ ﺗ ﺎﯾﯿﻦ ﻣﯿﺸ ﻮد( – ﻃ ﻮل ﻋﻤ ﺮ )ﻃ ﻮل ﻋﻤ ﺮ ﯾ ﮏ ﻣﺘﻐﯿ ﺮ ﻣ ﺪت
زﻣ ﺎﻧﯽ اﺳ ﺖ در ھﻨﮕ ﺎم اﺟ ﺮای ﺑﺮﻧﺎﻣ ﮫ ﮐ ﮫ ﻣﺘﻐﯿ ﺮ وﺟ ﻮد دارد .ﻣﺘﻐﯿﺮھ ﺎی ﻣﺤﻠ ﯽ ﺗ ﺎ زﻣ ﺎﻧﯽ وﺟ ﻮد دارﻧ ﺪ ﮐ ﮫ ﻣﺘ ﺪ
ﺣ ﺎوی اﻋ ﻼن آﻧﮭ ﺎ ﻓﻌ ﺎل اﺳ ﺖ .ﻓﯿﻠ ﺪھﺎی ﻏﯿ ﺮ اﯾﺴ ﺘﺎی ﯾ ﮏ ﮐ ﻼس ﺗ ﺎ زﻣ ﺎﻧﯽ وﺟ ﻮد دارﻧ ﺪ ﮐ ﮫ ﺷ ﯿﻌﯽ ﮐ ﮫ اﯾ ﻦ اﻋﻀ ﺎء
ﻋﻀ ﻮ آن ﻣﺤﺴ ﻮب ﻣﯿﺸ ﻮد وﺟ ﻮد داﺷ ﺘﮫ ﺑﺎﺷ ﺪ .ﻓﯿﻠ ﺪھﺎی اﺳ ﺘﺎﺗﯿﮑﯽ ﯾ ﮏ ﮐ ﻼس ﺗ ﺎ زﻣ ﺎﻧﯽ وﺟ ﻮد دارﻧ ﺪ ﮐ ﮫ ﮐ ﻼس
ﺣ ﺎوی ﺗﻌﺮﯾ ﻒ اﯾ ﻦ ﻓﯿﻠ ﺪھﺎ در ﻣﺎﺷ ﯿﻦ ﻣﺠ ﺎزی ﺟ ﺎوا ﺑ ﺎﻗﯽ ﺑﻤﺎﻧ ﺪ( – داﻣﻨ ﮫ )داﻣﻨ ﮫ ﯾ ﮏ ﻣﺘﻐﯿ ﺮ ﺑ ﺎزه ای از ﻣ ﺘﻦ ﺑﺮﻧﺎﻣ ﮫ
اﺳﺖ ﮐﮫ ﻣﺘﻐﯿﺮ ﻣﯿﺘﻮاﻧﺪ ﻣﻮرد ارﺟﺎع واﻗﻊ ﺷﻮد(.
ﺑﺮﺧ ﯽ ﺻ ﻔﺎت ﯾ ﮏ ﻣﺘﻐﯿ ﺮ از ﻗﺒﯿ ﻞ ﻧ ﺎم و ﻧ ﻮع در زﻣ ﺎن ﮐﺎﻣﭙﺎﯾ ﻞ ﻣﺸ ﺨﺺ ﻣﯿﺸ ﻮﻧﺪ )اﻧﻘﯿ ﺎد اﯾﺴ ﺘﺎ( ،ﺑﺮﺧ ﯽ دﯾﮕ ﺮ از
ﺻﻔﺎت ﯾﮏ ﻣﺘﻐﯿﺮ از ﻗﺒﯿﻞ ﻣﻘﺪار ﻣﻤﮑﻦ اﺳﺖ در زﻣﺎن اﺟﺮا ﻣﺸﺨﺺ ﺷﻮد )اﻧﻘﯿﺎد ﭘﻮﯾﺎ(.
دو ﻧ ﻮع ﻣﺘﻐﯿ ﺮ در ﺟ ﺎوا وﺟ ﻮد دارﻧ ﺪ :ﻣﺘﻐﯿ ﺮی ﮐ ﮫ در داﺧ ﻞ ﻣﺘ ﺪ اﻋ ﻼن ﻣﯿﺸ ﻮد )ﻣﺘﻐﯿ ﺮ ﻣﺤﻠ ﯽ( ،ﻣﺘﻐﯿ ﺮی ﮐ ﮫ در ﺑﺪﻧ ﮫ
ﮐﻼس اﻋﻼن ﻣﯿﺸﻮد )ﻓﯿﻠﺪ( .ﻧﻮع ﯾﮏ ﻣﺘﻐﯿﺮ ﺟﺎوا ﯾﺎ ﯾﮑﯽ از اﻧﻮاع اﭘﺘﺪاﯾﯽ اﺳﺖ و ﯾﺎ از ﻧﻮع ارﺟﺎع اﺳﺖ.
اﻧﻮاع
اﻧﻮاع اوﻟﯿﮫ ﻋﺒﺎرﺗﻨﺪ از .boolean, char, short, int, long, float, double
ﺟ ﺎوا ھﻤﭽﻨ ﯿﻦ از اﻧ ﻮاع ﺗﻌﺮﯾ ﻒ ﺷ ﺪه ﺗﻮﺳ ﻂ ﮐ ﺎرﺑﺮ ﭘﺸ ﺘﯿﺒﺎﻧﯽ ﻣﯿﮑﻨ ﺪ .اﻧ ﻮاع ﺗﻌﺮﯾ ﻒ ﺷ ﺪه ﺗﻮﺳ ﻂ ﮐ ﺎرﺑﺮ ﺑﻮﺳ ﯿﻠﮫ ﺗﻌﺮﯾ ﻒ
ﮐ ﻼس اﯾﺠ ﺎد ﻣﯿﺸ ﻮﻧﺪ .ﺑ ﮫ ﻋﻨ ﻮان ﻣﺜ ﺎل ﺑ ﺎ ﺗﻌﺮﯾ ﻒ ﮐ ﻼس Fooﻧ ﻮع ﺟﺪﯾ ﺪی ﺧﻠ ﻖ ﻣﯿﺸ ﻮد ﮐ ﮫ ﻣﯿﺘﻮاﻧ ﺪ ﺑ ﺮای اﻋ ﻼن
ﻣﺘﻐﯿﺮ ﻣﻮرد اﺳﺘﻔﺎده ﻗﺮار ﮔﯿﺮد:
;Foo f
در زﺑ ﺎن ﺟ ﺎوا ھ ﺮ ﻣﺘﻐﯿ ﺮی ﮐ ﮫ از ﻧ ﻮع ﯾﮑ ﯽ از اﻧ ﻮاع اﭘﺘ ﺪاﯾﯽ ﻧﺒﺎﺷ ﺪ ،ﻣﺘﻐﯿ ﺮ ﻧ ﻮع ارﺟ ﺎع ﺧﻮاﻧ ﺪه ﻣﯿﺸ ﻮد .اﯾ ﻦ ﻗﺒﯿ ﻞ
ﻣﺘﻐﯿ ﺮ ﻣﯿﺘﻮاﻧ ﺪ ﺑ ﮫ ﻋﻨ ﻮان ارﺟ ﺎع ﺑ ﮫ )ﯾ ﺎ اﺷ ﺎره ﺑ ﮫ( ﯾ ﮏ ﺷ ﯽ ﺑ ﺎ ﻧ ﻮﻋﯽ ﺧ ﺎص ﺗﺼ ﻮر ﺷ ﻮد .ﺑﻨ ﺎﺑﺮاﯾﻦ ،ﻣﺘﻐﯿ ﺮ fﮐ ﮫ در
ﺑﺎﻻ ﺗﻌﺮﯾﻒ ﺷﺪ ﯾﮏ ارﺟﺎع ﺑﮫ ﺷﯽ ﮐﻼس Fooﻣﯿﺒﺎﺷﺪ.
18
در ﺟ ﺎوا ﻧﻤﻮﻧ ﮫ ھ ﺎی ﮐ ﻼس ﻣﯿﺒﺎﯾﺴ ﺖ ﺑ ﮫ ﺻ ﻮرت ﺻ ﺮﯾﺢ اﯾﺠ ﺎد ﺷ ﻮﻧﺪ .ﯾ ﮏ ﻧﻤﻮﻧ ﮫ از ﯾ ﮏ ﮐ ﻼس ﺑ ﺎ اﺳ ﺘﻔﺎده از
ﻋﻤﻠﮕﺮ newاﯾﺠﺎد ﻣﯿﺸﻮد:
در زﺑ ﺎن ﺟ ﺎوا ﯾ ﮏ ﻣﺘﻐﯿ ﺮ ﺑ ﺎ ﻧ ﻮع ارﺟ ﺎع ﻣﻤﮑ ﻦ اﺳ ﺖ ﺑ ﮫ ھ ﯿﭻ ﭼﯿ ﺰ اﺷ ﺎره ﻧﮑﻨ ﺪ .ارﺟ ﺎﻋﯽ ﮐ ﮫ ﺑ ﮫ ھ ﯿﭻ ﭼﯿ ﺰ ارﺟ ﺎع
داده ﻧﺸ ﻮد ارﺟ ﺎع ﺗﮭ ﯽ ﻧﺎﻣﯿ ﺪه ﻣﯿﺸ ﻮد .ﺑ ﮫ ﺻ ﻮرت ﭘﯿﺸ ﻔﺮض ﯾ ﮏ ارﺟ ﺎع ﮐ ﮫ ﻣﻘ ﺪاردھﯽ اوﻟﯿ ﮫ ﻧﺸ ﺪه اﺳ ﺖ ﺗﮭ ﯽ
ﻣﯿﺒﺎﺷﺪ.
ارﺳﺎل ﭘﺎراﻣﺘﺮ
ارﺳ ﺎل ﭘ ﺎراﻣﺘﺮ ﺑ ﮫ ﻣﮑﺎﻧﯿﺴ ﻤﯽ اﻃ ﻼق ﻣﯿﺸ ﻮد ﮐ ﮫ ﭼﮕ ﻮﻧﮕﯽ اﻧﺘﻘ ﺎل ﭘﺎرﻣﺘﺮھ ﺎ ﻣ ﺎﺑﯿﻦ ﻣﺘ ﺪھﺎ را ھﻨﮕﺎﻣﯿﮑ ﮫ ﻣﺘ ﺪی ﻣﺘ ﺪھﺎی
دﯾﮕ ﺮ را ﻓﺮاﺧ ﻮاﻧﯽ ﻣﯿﮑﻨ ﺪ ﺗﺸ ﺮﯾﺢ ﻣﯿﻨﻤﺎﯾ ﺪ .ﺟ ﺎوا ﺗﻨﮭ ﺎ روش ارﺳ ﺎل ﺑﻮﺳ ﯿﻠﮫ ﻣﻘ ﺪار را ﭘﺸ ﺘﯿﺒﺎﻧﯽ ﻣﯿﮑﻨ ﺪ .ﺑﺮﻧﺎﻣ ﮫ زﯾ ﺮ
را در ﻧﻈﺮ ﺑﮕﯿﺮﯾﺪ:
19
در ﺧ ﻂ ،7ﻣﺘ ﺪ oneﻣﺘ ﺪ towرا ﻓ ﺮا ﻣﯿﺨﻮاﻧ ﺪ .در ﺣﺎﻟ ﺖ ﮐﻠ ﯽ ،ﻓﺮاﺧ ﻮاﻧﯽ ھ ﺮ ﻣﺘ ﺪ ﺷ ﺎﻣﻞ ﺗﻌ ﺪادی ﻣﺘﻨ ﺎھﯽ و ﯾ ﺎ
ھ ﯿﭻ آرﮔﻮﻣ ﺎن اﺳ ﺖ .آرﮔﻮﻣﺎﻧﮭ ﺎی ﻣﺸ ﺨﺺ ﺷ ﺪه در ﻓﺮاﺧ ﻮاﻧﯽ ﯾ ﮏ ﻣﺘ ﺪ ﭘﺎراﻣﺘﺮھ ﺎی واﻗﻌ ﯽ ﺧﻮاﻧ ﺪه ﻣﯿﺸ ﻮﻧﺪ .در اﯾ ﻦ
ﻣﺜ ﺎل ﺗﻨﮭ ﺎ ﯾ ﮏ ﭘ ﺎراﻣﺘﺮ واﻗﻌ ﯽ ) (yوﺟ ﻮد دارد .در ﺧ ﻂ ،11ﻣﺘ ﺪ towﺑ ﮫ ﮔﻮﻧ ﮫ ای ﺗﻌﺮﯾ ﻒ ﺷ ﺪه اﺳ ﺖ ﮐ ﮫ ﯾ ﮏ
آرﮔﻮﻣ ﺎن از ﻧ ﻮع intﺑ ﺎ ﻧ ﺎم xﻣﯿﭙ ﺬﯾﺮد .آرﮔﻮﻣﺎﻧﮭ ﺎﯾﯽ ﮐ ﮫ در ﺗﻌﺮﯾ ﻒ ﯾ ﮏ ﻣﺘ ﺪ ﻇ ﺎھﺮ ﻣﯿﺸ ﻮﻧﺪ ﭘﺎراﻣﺘﺮھ ﺎی ﺻ ﻮری
ﺧﻮاﻧﺪه ﻣﯿﺸﻮﻧﺪ .در اﯾﻦ ﻣﺜﺎل ﭘﺎراﻣﺘﺮ ﺻﻮری از ﻧﻮع اﭘﺘﺪاﯾﯽ ﻣﯿﺒﺎﺷﺪ.
ﻣﮑﺎﻧﯿﺴ ﻢ ارﺳ ﺎل ﺑﻮﺳ ﯿﻠﮫ ﻣﻘ ﺪار ﺑ ﺮای اﻧ ﻮاع اﭘﺘ ﺪاﯾﯽ اﯾﻨﮕﻮﻧ ﮫ اﺳ ﺖ :وﺟ ﻮد ﭘ ﺎراﻣﺘﺮ ﺻ ﻮری ﺑ ﮫ ﻣﺎﻧﻨ ﺪ اﯾﺠ ﺎد ﯾ ﮏ
ﻣﺘﻐﯿ ﺮ ﻣﺤﻠ ﯽ در ﻣﺘ ﺪ ﻣﺮﺑﻮﻃ ﮫ ﻣﯿﺒﺎﺷ ﺪ ،ﺑ ﮫ ﻋﻨ ﻮان ﻣﺜ ﺎل ﻣﺘ ﺪ towﯾ ﮏ ﻣﺘﻐﯿ ﺮ ﻣﺤﻠ ﯽ از ﻧ ﻮع intﺑﺎﻧ ﺎم xدارد.
ھﻨﮕﺎﻣﯿﮑ ﮫ ﻣﺘ ﺪ ﻓﺮاﺧﻮاﻧ ﺪه ﺷ ﺪ ،ﻣﻘ ﺎدﯾﺮ ﭘﺎراﻣﺘﺮھ ﺎی واﻗﻌ ﯽ ﻗﺒ ﻞ از اﺟ ﺮای ﺑﺪﻧ ﮫ ﻣﺘ ﺪ ﺑ ﮫ ﭘﺎراﻣﺘﺮھ ﺎی ﺻ ﻮری ﻧﺴ ﺒﺖ
داده ﻣﯿﺸ ﻮﻧﺪ ،ﺣ ﺎل ﭘ ﺎراﻣﺘﺮ واﻗﻌ ﯽ و ﺻ ﻮری ﺑ ﺪون ھ ﯿﭻ ﮔﻮﻧ ﮫ ﺗ ﺎﺛﯿﺮی ﺑ ﺮ روی ھ ﻢ در ﺑﺮﻧﺎﻣ ﮫ اﯾﻔ ﺎی ﻧﻘ ﺶ ﻣﯿﮑﻨﻨ ﺪ.
ﺑﻨﺎﺑﺮاﯾﻦ ﺑﮫ ﺳﺎدﮔﯽ ﻣﯿﺘﻮاﻧﯿﺪ ﺧﺮوﺟﯽ ﺑﺮﻧﺎﻣﮫ ﻓﻮق را ﺑﯿﺎﺑﯿﺪ.
20
ﻣﺘﻐﯿﺮھ ﺎی xو yدر ﻣﺘ ﺪھﺎی oneو twoاز ﻧ ﻮع ارﺟ ﺎع ﻣﯿﺒﺎﺷ ﻨﺪ x .و yاز ﻧ ﻮع Objﻣﯿﺒﺎﺷ ﻨﺪ .ازاﯾﻨ ﺮو x ،و y
ھﺮدو ﺑﮫ ﻧﻤﻮﻧﮫ ای)ﺷﯿﻌﯽ( از ﮐﻼس Objارﺟﺎع ﻣﯿﺸﻮﻧﺪ.
ﻣﮑﺎﻧﯿﺴ ﻢ ارﺳ ﺎل ﺑﻮﺳ ﯿﻠﮫ ﻣﻘ ﺪار ﺑ ﺮای اﻧ ﻮاع ارﺟ ﺎع اﯾﻨﮕﻮﻧ ﮫ اﺳ ﺖ :وﺟ ﻮد ﯾ ﮏ ﭘ ﺎراﻣﺘﺮ ﺻ ﻮری ﺑ ﮫ ﻣﺎﻧﻨ ﺪ اﯾﺠ ﺎد ﯾ ﮏ
ﻣﺘﻐﯿ ﺮ ﻣﺤﻠ ﯽ در ﻣﺘ ﺪ ﻣﺮﺑﻮﻃ ﮫ ﻣﯿﺒﺎﺷ ﺪ .ﺑ ﮫ ﻋﻨ ﻮان ﻣﺜ ﺎل ،ﻣﺘ ﺪ twoدارای ﯾ ﮏ ﻣﺘﻐﯿ ﺮ ﻣﺤﻠ ﯽ از ﻧ ﻮع Objﺑ ﺎ ﻧ ﺎم x
ﻣﯿﺒﺎﺷ ﺪ .ھﻨﮕﺎﻣﯿﮑ ﮫ ﻣﺘ ﺪ ﻓﺮاﺧﻮاﻧ ﺪه ﺷ ﺪ ،ﭘﺎراﻣﺘﺮھ ﺎی واﻗﻌ ﯽ ﺑ ﮫ ﭘﺎراﻣﺘﺮھ ﺎی ﺻ ﻮری ﻗﺒ ﻞ از اﺟ ﺮای ﺑﺪﻧ ﮫ ﻣﺘ ﺪ ﻧﺴ ﺒﺖ
داده ﻣﯿﺸ ﻮﻧﺪ .از آﻧﺠﺎﮐ ﮫ xو yاز ﻧ ﻮع ارﺟ ﺎع ﻣﯿﺒﺎﺷ ﻨﺪ ،ھﻨﮕﺎﻣﯿﮑ ﮫ ﻣ ﺎ yرا ﺑ ﮫ xﻧﺴ ﺒﺖ ﻣﯿ ﺪھﯿﻢ در واﻗ ﻊ ھ ﺮ دوی
آﻧﮭﺎ را ﺑﮫ ﯾﮏ ﺷﯽ Objﻧﺴﺒﺖ ﻣﯿﺪھﯿﻢ .ﺳﻌﯽ ﮐﻨﯿﺪ ﺧﺮوﺟﯽ ﺑﺮﻧﺎﻣﮫ ﻓﻮق را ﺗﺸﺨﯿﺺ دھﯿﺪ.
ﮐﻼﺳﮭﺎ و اﺷﯿﺎء
ﯾ ﮏ ﺷ ﯽ ﻧﻤﻮﻧ ﮫ ای اﺳ ﺖ از ﯾ ﮏ ﮐ ﻼس ﯾ ﺎ ﯾ ﮏ آراﯾ ﮫ .ﮐ ﻼس ﯾ ﮏ ﺷ ﯽ وﺿ ﻌﯿﺖ و ﭼﮕ ﻮﻧﮕﯽ دﺳ ﺘﯿﺎﺑﯽ ﺑ ﮫ ﺷ ﯽ را
ﺗ ﺎﯾﯿﻦ ﻣﯿﮑﻨ ﺪ .ﯾ ﮏ ﮐ ﻼس ﻣﺘ ﺪھﺎ و داده ھ ﺎ را ﺑﺴ ﺘﮫ ﺑﻨ ﺪی ﻣﯿﮑﻨ ﺪ .اﯾ ﻦ ﺑﺴ ﺘﮫ ﺑﻨ ﺪی ﻗ ﺮاردادی اﺳ ﺖ ﻣ ﺎﺑﯿﻦ ﭘﯿ ﺎده ﺳ ﺎز
ﮐ ﻼس و ﮐ ﺎرﺑﺮ )ﻣﺸ ﺘﺮی( ﮐ ﻼس .ﺳ ﺎﺧﺘﺎر ﮐ ﻼس ﺟ ﺎوا را ﺑ ﮫ زﺑ ﺎﻧﯽ ﺷ ﯽ ﮔ ﺮا ﻣﺒ ﺪل ﺳ ﺎﺧﺘﮫ اﺳ ﺖ .ﮐ ﻼس ﺟ ﺎوا
ﻣﺠﻤﻮﻋ ﮫ ای از ﻣﻘ ﺎدﯾﺮ و ﻋﻤﻠﯿ ﺎت را ﺗﻌﺮﯾ ﻒ ﻣﯿﮑﻨ ﺪ .ﮐﻼﺳ ﮭﺎ ﻣ ﺎژول ﺑﻨ ﺪی و ﭘﻨﮭ ﺎن ﺳ ﺎزی اﻃﻼﻋ ﺎت را ﺗﺴ ﮭﯿﻞ
ﻣﯿﻨﻤﺎﯾﻨ ﺪ .ﮐ ﺎرﺑﺮ ﯾ ﮏ ﮐ ﻼس اﺷ ﯿﺎء ﮐ ﻼس را ﺗﻨﮭ ﺎ ﺑﻮﺳ ﯿﻠﮫ ﻣﺘ ﺪھﺎی اراﺋ ﮫ ﺷ ﺪه ﺑﻮﺳ ﯿﻠﮫ ﮐ ﻼس دﺳ ﺘﮑﺎری ﻣﯿﮑﻨﻨ ﺪ.
ﮐﻼﺳ ﮭﺎی ﻣﺘﻔ ﺎوت اﻏﻠ ﺐ وﯾﮋﮔﯿﮭ ﺎی ﻣﺸ ﺘﺮﮐﯽ دارﻧ ﺪ .ﭼﻨ ﺪﯾﻦ ﮐ ﻼس ﻣﺘﻔ ﺎوت ﻣﻤﮑ ﻦ اﺳ ﺖ ﻣﻘ ﺎدﯾﺮ ﯾﮑﺴ ﺎﻧﯽ را ﺑ ﮫ
اﺷ ﺘﺮاک ﺑﮕﺬارﻧ ﺪ; ﻋﻤﻠﯿ ﺎت ﯾﮑﺴ ﺎﻧﯽ را اﻧﺠ ﺎم دھﻨ ﺪ و راﺑﻄﮭ ﺎی ﻣﺸ ﺘﺮﮐﯽ را ﭘﺸ ﺘﯿﺒﺎﻧﯽ ﮐﻨﻨ ﺪ .ای ﻗﺒﯿ ﻞ ﻋﻤﻠﯿ ﺎت در
ﺟﺎوا ﺑﻮﺳﯿﻠﮫ اﺷﺘﻘﺎق ) (derivationو وراﺛﺖ ﺻﻮرت ﻣﯿﭙﺬﯾﺮد.
21
ھﺮ ﺷﯽ ﮐﻼس complexدارای ﻓﯿﻠﺪھﺎی ﻣﺨﺼﻮص ﺑﮫ ﺧﻮد ﻣﯿﺒﺎﺷﺪ:
cو dدو ﻧﻤﻮﻧ ﮫ ﻣﺘﻔ ﺎوت از ﮐ ﻼس Complexھﺴ ﺘﻨﺪ .ازاﯾﻨ ﺮو ،ھﺮﮐ ﺪام دارای ﻓﯿﻠ ﺪ realو imagﻣﺨﺼ ﻮص ﺑ ﮫ
ﺧ ﻮد ھﺴ ﺘﻨﺪ .ﺑﺮﻧﺎﻣ ﮫ ﻓ ﻮق ھﻤﭽﻨ ﯿﻦ ﻣﺘ ﺪھﺎی setRealو setImagرا ﺗﻌﺮﯾ ﻒ ﻣﯿﮑﻨ ﺪ .در ﺣﺎﻟ ﺖ ﮐﻠ ﯽ ﯾ ﮏ ﻣﺘ ﺪ
ﺑﺮﺧ ﯽ ﻋﻤﻠﯿ ﺎت را ﺑ ﺮ روی ﯾ ﮏ ﻧﻤﻮﻧ ﮫ از ﮐ ﻼس اﻧﺠ ﺎم ﻣﯿﺪھ ﺪ .ﻋﻤﻠﮕ ﺮ دات ) (.ﺟﮭ ﺖ دﺳ ﺘﯿﺎﺑﯽ ﺑ ﮫ ﻓﯿﻠ ﺪھﺎی ﯾ ﮏ ﺷ ﯽ
و ھﻤﭽﻨﯿﻦ ﻣﺸﺨﺺ ﺳﺎﺧﺘﻦ ﺷﯿﻌﯽ ﮐﮫ ﻋﻤﻠﯿﺎت ﺑﺮ روی آن اﻧﺠﺎم ﻣﯿﭙﺰﯾﺮد ﻣﻮرد اﺳﺘﻔﺎده ﻗﺮار ﻣﯿﮕﯿﺮد.
در اﯾﻦ ﺑﺮﻧﺎﻣﮫ ﺳﮫ ﺳﺎزﻧﺪه ﺗﻌﺮﯾﻒ ﺷﺪه اﻧﺪ .ﺳﮫ اﻋﻼن زﯾﺮ ھﺮ ﯾﮏ ﺳﺎزﻧﺪه ای را ﻓﺮاﺧﻮاﻧﯽ ﻣﯿﮑﻨﻨﺪ:
;)( Complex c = new Complex )( // calls Complex
)Complex d = new Complex (2.0); // calls Complex (double
)Complex i = new Complex (0, 1); // calls Complex (double, double
22
اﮔﺮ در ﯾﮏ ﮐﻼس ھﯿﭻ ﺳﺎزﻧﺪه ای ﺗﻌﺮﯾﻒ ﻧﺸﺪه ﺑﺎﺷﺪ ،ﮐﺎﻣﭙﺎﯾﻠﺮ ﺟﺎوا ﯾﮏ ﺳﺎزﻧﺪه ﭘﯿﺶ ﻓﺮض در ﻧﻈﺮ ﻣﯿﮕﯿﺮد.
ﻗ ﺒﻼ ﺑﯿ ﺎن ﺷ ﺪ ﮐ ﮫ thisاﺷ ﺎره ﮔ ﺮی اﺳ ﺖ ﺑ ﮫ ﺷ ﯽ ﺟ ﺎری ،اﻣ ﺎ ﮐ ﺎرﺑﺮد thisﺑ ﮫ ھﻤ ﯿﻦ ﺟ ﺎ ﺧ ﺘﻢ ﻧﻤﯿﺸ ﻮد .ﺑﺮﻧﺎﻣ ﮫ ﻓ ﻮق
رواﻟ ﯽ را ﺑ ﺮای ﺳ ﺎزﻧﺪه ﺑ ﺪون آرﮔﻮﻣ ﺎن و ﺳ ﺎزﻧﺪه ﺗ ﮏ آرﮔﻮﻣ ﺎن اراﺋ ﮫ ﻣﯿﮑﻨ ﺪ .در زﺑ ﺎن ﺟ ﺎوا ﯾ ﮏ ﺳ ﺎزﻧﺪه ﻣﯿﺘﻮاﻧ ﺪ
ﺗﻮﺳ ﻂ thisﺳ ﺎزﻧﺪه دﯾﮕ ﺮی را ﺑ ﺮای ﺷ ﯽ ﺟ ﺎری ﻓﺮاﺧ ﻮاﻧﯽ ﻧﻤﺎﯾ ﺪ ،در اﯾ ﻦ ﻣﮑﺎﻧﯿﺴ ﻢ thisﻧﻘ ﺶ ﯾ ﮏ ﻣﺘ ﺪ را ﺑ ﺎزی
ﻣﯿﮑﻨﺪ ﮐﮫ ﺑﺎ ﺗﻮﺟﮫ ﺑﮫ ﻧﻮع و ﺗﻌﺪاد آرﮔﻮﻣﺎﻧﮭﺎﯾﺶ ﺳﺎزﻧﺪه ﻣﻨﺎﺳﺐ را ﻓﺮاﺧﻮاﻧﯽ ﻣﯿﮑﻨﺪ.
ﻣﺘﺪھﺎی دﺳﺘﯿﺎب
ﻣﺘ ﺪ دﺳ ﺘﯿﺎب ﻣﺘ ﺪی اﺳ ﺖ ﮐ ﮫ ﻣﺤﺘﻮﯾ ﺎت ﯾ ﮏ ﺷ ﯽ را ﺑ ﺪون ﺗﻘﯿﯿ ﺮ آن دﺳ ﺘﯿﺎﺑﯽ ﻣﯿﮑﻨ ﺪ .در ﺣﺎﻟ ﺖ ﺳ ﺎده ﻣﺘ ﺪ دﺳ ﺘﯿﺎب ﺗﻨﮭ ﺎ
ﻣﻘ ﺪار ﯾ ﮏ ﻓﯿﻠ ﺪ را ﺑﺮﻣﯿﮕﺮداﻧ ﺪ .ﯾ ﮏ ﻣﺘ ﺪ دﺳ ﺘﯿﺎب ﺑﺮﺧ ﯽ ﻣﺤﺴ ﺒﺎت را ﻣﯿﺘﻮاﻧ ﺪ ﺑ ﺎ اﺳ ﺘﻔﺪه از ﻓﯿﻠ ﺪھﺎ اﻧﺠ ﺎم دھ ﺪ ﺑ ﮫ
ﺷ ﺮﻃﯽ ﮐ ﮫ اﯾ ﻦ ﻣﺤﺴ ﺒﺎت ھﯿﭽﯿ ﮏ از ﻓﯿﻠ ﺪھﺎ را ﺗﻘﯿﯿ ﺮ ﻧﺪھ ﺪ .ﺑﺮﻧﺎﻣ ﮫ زﯾ ﺮ ﭘ ﻨﺞ ﻣﺘ ﺪ دﺳ ﺘﯿﺎب ﺑ ﺮای ﮐ ﻼس Complex
ﺗﻌﺮﯾﻒ ﻣﯿﮑﻨﺪ .ﻣﺘﺪھﺎی getRو getThetaﻣﺨﺘﺼﺎﺗﮭﺎی ﻗﻄﺒﯽ ﯾﮏ ﻋﺪد ﻣﺨﺘﻠﻂ را ﺑﺮﻣﯿﮕﺮداﻧﻨﺪ.
ﺑﺎ ﺗﻌﺮﯾﻒ ﻣﺘﺪھﺎی دﺳﺘﯿﺎب ﻣﻨﺎﺳﺐ اﻣﮑﺎن ﭘﻨﮭﺎن ﺳﺎزی اﻃﻼﻋﺎت ﯾﮏ ﮐﻼس از دﯾﺪ ﮐﺎرﺑﺮ ﮐﻼس ﻓﺮاھﻢ ﻣﯿﺸﻮد.
23
ﻣﺎﺗﺎﺗﻮرھﺎ
ﯾ ﮏ ﻣﺎﺗ ﺎﺗﻮر ﻣﺘ ﺪی اﺳ ﺖ ﮐ ﮫ ﻣﯿﺘﻮاﻧ ﺪ ﻣﺤﺘﻮﯾ ﺎت ﯾ ﮏ ﺷ ﯽ را ﺗﻘﯿﯿ ﺮ دھ ﺪ .در ﺣﺎﻟ ﺖ ﺧ ﺎص ﻣﺎﺗ ﺎﺗﻮر ﺗﻨﮭ ﺎ ﯾ ﮏ ﻣﻘ ﺪار
ﺟﺪﯾ ﺪ را ﺑ ﮫ ﯾ ﮏ ﻓﯿﻠ ﺪ ﺧ ﺎص ﻧﺴ ﺒﺖ ﻣﯿﺪھ ﺪ .در ﺣﺎﻟ ﺖ ﮐﻠ ﯽ ﻣﺎﺗ ﺎﺗﻮر ﺑﺮﺧ ﯽ ﻣﺤﺎﺳ ﺒﺎت و اﺻ ﻼﺣﺎت را ﺑ ﺮ روی
ھﺮﯾﮏ از ﻓﯿﻠﺪھﺎی ﺷﯽ اﻧﺠﺎم ﻣﯿﺪھﺪ.
ﺑﺮﻧﺎﻣ ﮫ زﯾ ﺮ ﺳ ﮫ ﻣﺎﺗ ﺎﺗﻮر setTheta ،setRو assignرا ﺑ ﺮای ﮐ ﻼس Complexﺗﻌﺮﯾ ﻒ ﻣﯿﮑﻨ ﺪ ﮐ ﮫ ھﺮﮐ ﺪام
ﻣﻘﺎدﯾﺮ ﺟﺪﯾﺪی را ﺑﮫ ﻓﯿﻠﺪھﺎی realو imagﻧﺴﺒﺖ ﻣﯿﺪھﻨﺪ:
24
ﮐﻨﺘﺮل دﺳﺘﯿﺎﺑﯽ ﻋﻀﻮ
ھ ﺮ ﻋﻀ ﻮ ﯾ ﮏ ﮐ ﻼس )ﻓﯿﻠ ﺪ ﯾ ﺎ ﻣﺘ ﺪ( دارای ﯾ ﮏ ﺻ ﻔﺖ ﮐﻨﺘ ﺮل دﺳ ﺘﯿﺎﺑﯽ ﻣﯿﺒﺎﺷ ﺪ ﮐ ﮫ ﺷ ﯿﻮه ای ﮐ ﮫ ﻋﻀ ﻮ ﻣﯿﺘﻮاﻧ ﺪ ﻣ ﻮرد
دﺳ ﺘﯿﺎﺑﯽ ﻗ ﺮار ﮔﯿ ﺮد را ﺗﺤ ﺖ ﺗ ﺎﺛﯿﺮ ﻗ ﺮار ﻣﯿﺪھ ﺪ .اﻋﻀ ﺎء ﮐ ﻼس ﻣﯿﺘﻮاﻧﻨ ﺪ ﺧﺼﻮﺻ ﯽ ،ﻋﻤ ﻮﻣﯽ ﯾ ﺎ ﻣﺤﺎﻓﻈ ﺖ ﺷ ﺪه
ﺑﺎﺷ ﻨﺪ .اﻋﻀ ﺎ ﺧﺼﻮﺻ ﯽ ﺗﻨﮭ ﺎ ﻣﯿﺘﻮاﻧﻨ ﺪ ﺑﻮﺳ ﯿﻠﮫ ﻣﺘ ﺪھﺎی ﮐﻼﺳ ﯽ ﮐ ﮫ در آن ﺗﻌﺮﯾ ﻒ ﺷ ﺪه اﻧ ﺪ ﻣ ﻮرد دﺳ ﺘﯿﺎﺑﯽ ﻗ ﺮار
ﮔﯿﺮﻧﺪ .اﻣﺎ اﻋﻀﺎء ﻋﻤﻮﻣﯽ ﯾﮏ ﮐﻼس ﻣﯿﺘﻮاﻧﻨﺪ ﺑﻮﺳﯿﻠﮫ ﻣﺘﺪھﺎی ھﺮ ﮐﻼﺳﯽ ﻣﻮرد دﺳﺘﯿﺎﺑﯽ ﻗﺮار ﮔﯿﺮﻧﺪ.
ﺟ ﺎوا ﻧﻈﺮﯾ ﮫ ﭘﮑ ﯿﺞ را ﻣﻌﺮﻓ ﯽ ﻣﯿﮑﻨ ﺪ .ﺑﺮرﺳ ﯽ ﭘﮑ ﯿﺞ از ﺣﻮﺻ ﻠﮫ اﯾ ﻦ ﺑﺤ ﺚ ﺧ ﺎرج اﺳ ﺖ ،اﻣ ﺎ ﺑﯿ ﺎد داﺷ ﺘﮫ ﺑﺎﺷ ﯿﺪ ﮐ ﮫ
ﭘﮑﯿﺞ ﮐﻠﮑﺴﯿﻮﻧﯽ از ﮐﻼﺳﮭﺎی ﻣﺮﺗﺒﻂ ﻣﯿﺒﺎﺷﺪ.
ﮐﻼﺳﮭﺎی ﺗﻮ در ﺗﻮ
در ﺟ ﺎوا ﻣﯿﺘ ﻮان ﯾ ﮏ ﮐ ﻼس را در درون ﮐﻼﺳ ﯽ دﯾﮕ ﺮ ﺗﻌﺮﯾ ﻒ ﮐ ﺮد .ﮐﻼﺳ ﯽ ﮐ ﮫ در داﺧ ﻞ ﮐ ﻼس دﯾﮕ ﺮ ﺗﻌﺮﯾ ﻒ
ﻣﯿﺸﻮد را ﮐﻼس دروﻧﯽ ﻣﯿﻨﺎﻣﯿﻢ .ﺟﺎوا دو ﻧﻮع ﮐﻼس ﺗﻮ در ﺗﻮ را اراﺋﮫ ﻣﯿﮑﻨﺪ :اﺳﺘﺎﺗﯿﮑﯽ و ﻏﯿﺮ اﺳﺘﺎﺗﯿﮑﯽ.
;)(object.f
25
ﻧﻤﻮﻧ ﮫ ﺳ ﺎزی از ﮐ ﻼس ﺑﯿﺮوﻧ ﯽ Aﻣﻮﺟ ﺐ ﻧﻤﻮﻧ ﮫ ﺳ ﺎزی از ﮐ ﻼس دروﻧ ﯽ Bﻧﻤﯿﺸ ﻮد .ﻣﺘ ﺪھﺎی ﮐ ﻼس اﺳ ﺘﺎﺗﯿﮑﯽ
دروﻧ ﯽ ﻣﯿﺘﻮاﻧﻨ ﺪ ﺗﻤ ﺎم اﻋﻀ ﺎء )ﻓﯿﻠ ﺪھﺎ و ﻣﺘ ﺪھﺎ( ﮐ ﻼس دروﻧ ﯽ را دﺳ ﺘﯿﺎﺑﯽ ﻧﻤﺎﯾﻨ ﺪ ،اﻣ ﺎ ﺗﻨﮭ ﺎ ﻣﯿﺘﻮاﻧﻨ ﺪ ﺑ ﮫ اﻋﻀ ﺎء
)ﻓﯿﻠ ﺪھﺎ و ﻣﺘ ﺪھﺎ( اﺳ ﺘﺎﺗﯿﮑﯽ ﮐ ﻼس ﺧ ﺎرﺟﯽ دﺳﺘﺮﺳ ﯽ داﺷ ﺘﮫ ﺑﺎﺷ ﻨﺪ .ازاﯾﻨ ﺮو fﻣﯿﺘﻮاﻧ ﺪ ﻓﯿﻠ ﺪ xرا دﺳ ﺘﯿﺎﺑﯽ ﮐﻨ ﺪ اﻣ ﺎ
ﻧﻤﯿﺘﻮاﻧﺪ ﻓﯿﻠﺪ yرا دﺳﺘﯿﺎﺑﯽ ﮐﻨﺪ.
اﯾ ﻦ ﻗﻄﻌ ﮫ ﮐ ﻼس Aرا ﺗﻌﺮﯾ ﻒ ﻣﯿﮑﻨ ﺪ ﮐ ﮫ ﺣ ﺎوی ﯾ ﮏ ﮐ ﻼس دروﻧ ﯽ ﻏﯿﺮاﺳ ﺘﺎﺗﯿﮑﯽ Bﻣﯿﺒﺎﺷ ﺪ .ﯾ ﮏ ﮐ ﻼس دروﻧ ﯽ
ﻏﯿ ﺮ اﺳ ﺘﺎﺗﯿﮑﯽ ﻣﯿﺘﻮاﻧ ﺪ ﺗﻨﮭ ﺎ درون ﯾ ﮏ ﻣﺘ ﺪ ﻏﯿ ﺮ اﺳ ﺘﺎﺗﯿﮑﯽ از ﮐ ﻼس ﺑﯿﺮوﻧ ﯽ ﻧﻤﻮﻧ ﮫ ﺳ ﺎزی ﺷ ﻮد .اﯾ ﻦ اﻣ ﺮ ﺑ ﮫ اﯾ ﻦ
ﻋﻠ ﺖ اﺳ ﺖ ﮐ ﮫ ھ ﺮ ﻧﻤﻮﻧ ﮫ از ﮐ ﻼس ﻏﯿ ﺮ اﺳ ﺘﺎﺗﯿﮑﯽ دروﻧ ﯽ ﻣﯿﺒﺎﯾﺴ ﺖ ﺑ ﺎ ﯾ ﮏ ﻧﻤﻮﻧ ﮫ ﮐ ﻼس ﺑﯿﺮوﻧ ﯽ ﻣ ﺮﺗﺒﻂ ﺑﺎﺷ ﺪ.
ﻣﯿﺘ ﻮان ﮔﻔ ﺖ ،ھ ﺮ ﻧﻤﻮﻧ ﮫ از ﮐ ﻼس دروﻧ ﯽ ﻏﯿﺮاﺳ ﺘﺎﺗﯿﮑﯽ در درون ﯾ ﮏ ﻧﻤﻮﻧ ﮫ از ﮐ ﻼس ﺧ ﺎرﺟﯽ ﻣﻮﺟ ﻮد اﺳ ﺖ.
ﯾﮏ ﻧﻤﻮﻧﮫ از ﮐﻼس ﺧﺎرﺟﯽ ﻣﻤﮑﻦ اﺳﺖ ﺑﺎ ﭼﻨﺪﯾﻦ ﻧﻤﻮﻧﮫ ﮐﻼس دروﻧﯽ ﻣﺮﺗﺒﻂ ﺑﺎﺷﺪ.
ﭼ ﻮن ﯾ ﮏ ﻧﻤﻮﻧ ﮫ از ﮐ ﻼس ﻏﯿﺮاﺳ ﺘﺎﺗﯿﮑﯽ دروﻧ ﯽ دارای ﯾ ﮏ ﻧﻤﻮﻧ ﮫ ارﺗﺒ ﺎﻃﯽ از ﮐ ﻼس ﺧ ﺎرﺟﯽ ﻣﯿﺒﺎﺷ ﺪ ،ﻣﺘ ﺪھﺎی
ﮐ ﻼس دروﻧ ﯽ ﻣﯿﺘﻮاﻧﻨ ﺪ ﻣﺴ ﺘﻘﯿﻤﺎ ھ ﺮ ﻋﻀ ﻮ از ﻧﻤﻮﻧ ﮫ ﮐ ﻼس ﺧ ﺎرﺟﯽ را دﺳ ﺘﯿﺎﺑﯽ ﮐﻨﻨ ﺪ .ﺑﻨ ﺎﺑﺮاﯾﻦ ﻣﺘ ﺪ fﻣﯿﺘﻮاﻧ ﺪ xو y
را ﻣﺴ ﺘﻘﯿﻤﺎ دﺳ ﺘﯿﺎﺑﯽ ﮐﻨ ﺪ .ﮐﻠﻤ ﮫ ﮐﻠﯿ ﺪی thisﻣﯿﺘﻮاﻧ ﺪ در ﯾ ﮏ ﻣﺘ ﺪ ﻏﯿ ﺮ اﺳ ﺘﺎﺗﯿﮑﯽ ﺟﮭ ﺖ ﻣﺮاﺟﻌ ﮫ ﺑ ﮫ ﺷ ﯽ ﺟ ﺎری ﻣ ﻮرد
اﺳ ﺘﻔﺎده واﻗ ﻊ ﺷ ﻮد .ازاﯾﻨ ﺮو در ﻣﺘ ﺪ this ،fﺑ ﮫ ﯾ ﮏ ﻧﻤﻮﻧ ﮫ از ﮐ ﻼس دروﻧ ﯽ Bارﺟ ﺎع داده ﻣﯿﺸ ﻮد .ھ ﺮ ﮐ ﻼس
دروﻧ ﯽ ﻏﯿ ﺮ اﺳ ﺘﺎﺗﯿﮑﯽ ﺑ ﺎ ﯾ ﮏ ﻧﻤﻮﻧ ﮫ ﮐ ﻼس ﺧ ﺎرﺟﯽ ﻣ ﺮﺗﺒﻂ اﺳ ﺖ .ﺑ ﺮای دﺳ ﺘﯿﺎﺑﯽ ﺑ ﮫ ﻧﻤﻮﻧ ﮫ ﮐ ﻼس ﺧ ﺎرﺟﯽ از درون
ﻣﺘﺪ fﻣﯿﻨﻮﯾﺴﯿﻢ A.this
وراﺛﺖ
اﺷ ﺘﻘﺎق ﻋﺒ ﺎرت اﺳ ﺖ از ﺗﻌﺮﯾ ﻒ ﯾ ﮏ ﮐ ﻼس ﺟﺪﯾ ﺪ ﺑﻮﺳ ﯿﻠﮫ ﺗﻮﺳ ﻌﮫ ﯾ ﮏ ﮐ ﻼس ﻣﻮﺟ ﻮد .ﮐ ﻼس ﺟﺪﯾ ﺪ ﺣﺎﺻ ﻞ از اﯾ ﻦ
ﻓﺮاﯾﻨ ﺪ را ﮐ ﻼس ﻣﺸ ﺘﻖ ﺷ ﺪه و ﮐ ﻼس ﻣﻮﺟ ﻮد ﮐ ﮫ ﮐ ﻼس ﺟﺪﯾ ﺪ از آن ﻣﺸ ﺘﻖ ﺷ ﺪه اﺳ ﺖ را ﮐ ﻼس ﭘﺎﯾ ﮫ ﻣﯿﮕ ﻮﯾﯿﻢ .ﺗﻮﺳ ﻂ
ﮐﻼﺳ ﮭﺎی ﻣﺸ ﺘﻖ ﺷ ﺪه ﺑﺮﻧﺎﻣ ﮫ ﻧ ﻮﯾﺲ ﻣﯿﺘﻮاﻧ ﺪ از اﺷ ﺘﺮاک ﻣﻨ ﺎﺑﻊ ﻣﻮﺟ ﻮد ﻣﯿ ﺎن ﮐﻼﺳ ﮭﺎی ﺑﺮﻧﺎﻣ ﮫ ﺑﮭ ﺮه ﺑ ﺮداری ﻧﻤﺎﯾ ﺪ.
ﮐﻼﺳ ﮭﺎی ﻣﺨﺘﻠ ﻒ ﻣﯿﺘﻮاﻧﻨ ﺪ ﻣﻘ ﺎدﯾﺮ ،ﻋﻤﻠﯿ ﺎت و راﺑﻄﮭ ﺎ را ﺑ ﮫ اﺷ ﺘﺮاک ﺑﮕﺬارﻧ ﺪ .در ﺟ ﺎوا ﺗﻨﮭ ﺎ وراﺛ ﺖ ﯾﮕﺎﻧ ﮫ اﻣﮑ ﺎن
ﭘﺰﯾ ﺮ اﺳ ﺖ ،ﺑ ﮫ ﻋﺒ ﺎرﺗﯽ ﯾ ﮏ ﮐ ﻼس ﺟﺪﯾ ﺪ ﺗﻨﮭ ﺎ ﻣﯿﺘﻮاﻧ ﺪ از ﯾ ﮏ ﮐ ﻼس ﭘﺎﯾ ﮫ ﻣﺸ ﺘﻖ ﺷ ﻮد .اﺷ ﺘﻘﺎق در ﺟ ﺎوا ﺑﻮﺳ ﯿﻠﮫ ﮐﻠﻤ ﮫ
ﮐﻠﯿﺪی extendsﺻﻮرت ﻣﯿﭙﺬﯾﺮد.
26
ﯾ ﮏ ﮐ ﻼس ﻣﺸ ﺘﻖ ﺷ ﺪه ﺗﻤ ﺎم ﻋﻀ ﻮھﺎی ﮐ ﻼس ﭘﺎﯾ ﮫ را ﺑ ﮫ ارث ﻣﯿﺒ ﺮد .ﺑﻨ ﺎﺑﺮاﯾﻦ ،ﮐ ﻼس ﻣﺸ ﺘﻖ ﺷ ﺪه ﺷ ﺎﻣﻞ ﺗﻤ ﺎم
ﻓﯿﻠﺪھﺎی ﮐﻼس ﭘﺎﯾﮫ ﻣﯿﺒﺎﺷﺪ و ھﻤﭽﻨﯿﻦ از ﺗﻤﺎﻣﯽ ﻋﻤﻠﯿﺎت اراﺋﮫ ﺷﺪه ﺑﻮﺳﯿﻠﮫ ﮐﻼس ﭘﺎﯾﮫ ﭘﺸﺘﯿﺒﺎﻧﯽ ﻣﯿﮑﻨﺪ.
27
;)( Person p = new Person
;)( Parent q = new Parent
ازآﻧﺠﺎﮐ ﮫ pﯾ ﮏ ﺷ ﯽ personاﺳ ﺖ ،دارای ﻓﯿﻠ ﺪھﺎی nameو sexو ﻣﺘ ﺪ toStringﻣﯿﺒﺎﺷ ﺪ .ﺑﻌ ﻼوه ازاﻧﺠﺎﮐ ﮫ
parentاز ﮐ ﻼس personﻣﺸ ﺘﻖ ﺷ ﺪه اﺳ ﺖ ﭘ ﺲ ﺷ ﯽ qﻧﯿ ﺰ ﻓﯿﻠ ﺪھﺎی nameو sexو ﻣﺘ ﺪ toStringرا دارا
ﻣﯿﺒﺎﺷ ﺪ .ﯾ ﮏ ﮐ ﻼس ﻣﺸ ﺘﻖ ﺷ ﺪه ﺑ ﮫ ﭼﻨ ﺪ ﻃﺮﯾ ﻖ ﻣﯿﺘﻮاﻧ ﺪ ﮐ ﻼس ﭘﺎﯾ ﮫ را ﺗﻮﺳ ﻌﮫ دھ ﺪ :ﻓﯿﻠ ﺪھﺎی ﺟﺪﯾ ﺪ را ﺗﻌﺮﯾ ﻒ ﻧﻤﺎﯾ ﺪ،
ﻣﺘ ﺪھﺎی ﺟﺪﯾ ﺪ را ﺗﻌﺮﯾ ﻒ ﮐﻨ ﺪ و اﻋﻀ ﺎء ﻣﻮﺟ ﻮد را ﻧﺎدﯾ ﺪه ﺑﮕﯿ ﺮد .اﮔ ﺮ ﮐ ﻼس ﻣﺸ ﺘﻖ ﺷ ﺪه ﻣﺘ ﺪی ھﻤﻨ ﺎم و ھ ﻢ اﻣﻀ ﺎ ﺑ ﺎ
ﻣﺘ ﺪ ﻣﻮﺟ ﻮد در ﮐ ﻼس ﭘﺎﯾ ﮫ ﺗﻌﺮﯾ ﻒ ﮐﻨ ﺪ ،آﻧﮕ ﺎه ﻣﺘ ﺪ ﻣﻮﺟ ﻮد در ﮐ ﻼس ﭘﺎﯾ ﮫ ﻧﺎدﯾ ﺪه ﮔﺮﻓﺘ ﮫ ﻣﯿﺸ ﻮد .ﯾ ﮏ ﻧﻤﻮﻧ ﮫ از ﮐ ﻼس
ﻣﺸ ﺘﻖ ﺷ ﺪه ﻣﯿﺘﻮاﻧ ﺪ در ھ ﺮ ﻗﺴ ﻤﺖ ﺑﺮﻧﺎﻣ ﮫ ﮐ ﮫ ﻧﻤﻮﻧ ﮫ ای از ﮐ ﻼس ﭘﺎﯾ ﮫ ﺑﮑ ﺎر ﮔﺮﻓﺘ ﮫ ﺷ ﺪه اﺳ ﺖ ﺑﮑ ﺎر رود .ﺑ ﮫ ﻋﻨ ﻮان
ﻣﺜ ﺎل ﯾ ﮏ parentﻣﯿﺘﻮاﻧ ﺪ ﺑ ﮫ ﻋﻨ ﻮان ﯾ ﮏ ﭘ ﺎراﻣﺘﺮ واﻗﻌ ﯽ ﺑ ﮫ ﻣﺘ ﺪی ﮐ ﮫ از ﯾ ﮏ personﺑ ﮫ ﻋﻨ ﻮان ﭘ ﺎراﻣﺘﺮ ﺻ ﻮری
ﺑﮭ ﺮه ﻣﯿﺒ ﺮد ﻓﺮﺳ ﺘﺎده ﺷ ﻮد .ھﻤﭽﻨ ﯿﻦ ﻣﯿﺘ ﻮان ﯾ ﮏ ﺷ ﯽ ﮐ ﻼس ﻣﺸ ﺘﻖ ﺷ ﺪه را ﺑ ﮫ ﯾ ﮏ ﻣﺘﻐﯿ ﺮ ﮐ ﻼس ﭘﺎﯾ ﮫ ﻧﺴ ﺒﺖ داد،
ﺑﻨﺎﺑﺮاﯾﻦ اﻧﺘﺴﺎب زﯾﺮ ﻣﻌﺘﺒﺮ اﺳﺖ:
;)( Person p = new Parent
ﮔﺮﭼ ﮫ ھﻤﭽﻨ ﺎن ﻧﻤﯿﺘ ﻮان ﺑ ﮫ )…( p.getChildدﺳ ﺘﯿﺎﻓﺖ زﯾ ﺮا pﯾ ﮏ personاﺳ ﺖ و personﻟﺰوﻣ ﺎ parentرا
درﺑﺮ ﻧﻤﯿﮕﯿﺮد.
ﭼﻨﺪرﯾﺨﺘﯽ
ﭼﻨ ﺪرﯾﺨﺘﯽ از ﻟﺤ ﺎظ ﻣﻌﻨ ﺎﯾﯽ ﺑ ﮫ ﻣﻌﻨ ﯽ "دارا ﺑ ﻮدن ﻓﺮﻣﮭ ﺎ" ﻣﺨﺘﻠ ﻒ اﺳ ﺖ .ﭼﻨ ﺪرﯾﺨﺘﯽ از ﺑ ﮫ اﺷ ﺘﺮاک ﮔﺬاﺷ ﺘﻦ ﯾ ﮏ
راﺑ ﻂ ﻣﺘ ﺪاول ﻣ ﺎﺑﯿﻦ ﻣﺠﻤﻮﻋ ﮫ ای از ﮐﻼﺳ ﮭﺎی ﻣﺘﻔ ﺎوت ﻧﺎﺷ ﯽ ﻣﯿﺒﺎﺷ ﺪ .ازآﻧﺠﺎﮐ ﮫ ﮐﻼﺳ ﮭﺎی ﻣﺸ ﺘﻖ ﺷ ﺪه ﻣﺘﻔ ﺎوت
ﻣﯿﺒﺎﺷ ﻨﺪ ،ﻣﻤﮑ ﻦ اﺳ ﺖ ﭘﯿ ﺎده ﺳ ﺎزی ھ ﺎی ﻣﺨﺘﻠﻔ ﯽ داﺷ ﺘﮫ ﺑﺎﺷ ﻨﺪ .اﻣ ﺎ ﮐﻼﺳ ﮭﺎی ﻣﺸ ﺘﻖ ﺷ ﺪه ﯾ ﮏ راﺑ ﻂ ﻣﺘ ﺪاول را ﺑ ﮫ
اﺷﺘﺮاک ﻣﯿﮕﺬارﻧﺪ ،ﭘﺲ ﻧﻤﻮﻧﮫ ھﺎی اﯾﻦ ﮐﻼﺳﮭﺎ دﻗﯿﻘﺎ ﺑﮫ روش ﯾﮑﺴﺎﻧﯽ ﻣﻮرد اﺳﺘﻔﺎده ﻗﺮار ﻣﯿﮕﯿﺮﻧﺪ.
راﺑﻂ ھﺎ
ﺑﺮﻧﺎﻣ ﮫ ای را درﻧﻈ ﺮ ﺑﮕﯿﺮﯾ ﺪ ﮐ ﮫ ﻃﺮاﺣ ﯽ ھ ﺎی ﺳ ﺎده ای را اﯾﺠ ﺎد ﻣﯿﮑﻨ ﺪ .ﻓ ﺮض ﮐﻨﯿ ﺪ ﺑﺮﻧﺎﻣ ﮫ ﻣﺠﻤﻮﻋ ﮫ ای از اﺷ ﯿﺎء
ﮔﺮاﻓﯿﮑ ﯽ اﭘﺘ ﺪاﯾﯽ را اراﺋ ﮫ ﻣﯿ ﺪارد ،از ﻗﺒﯿ ﻞ داﯾ ﺮه ھ ﺎ ،ﻣﺴ ﺘﻄﯿﻠﮭﺎ و ﻣﺮﺑ ﻊ ھ ﺎ .ﮐ ﺎرﺑﺮ ﺑﺮﻧﺎﻣ ﮫ اﺷ ﯿﺎء ﻣﻄﻠ ﻮب را اﻧﺘﺨ ﺎب
ﻣﯿﮑﻨ ﺪ و ﺳ ﭙﺲ ﻓ ﺮاﻣﯿﻦ ﻃﺮاﺣ ﯽ ،ﭘ ﺎک ﮐ ﺮدن ،ﯾ ﺎ ﺣﺮﮐ ﺖ ﺑ ﮫ اﻃ ﺮاف را ﺻ ﺎدر ﻣﯿﮑﻨ ﺪ .در ﺣﺎﻟ ﺖ ﮐﻠ ﯽ ،ﺗﻤ ﺎم اﺷ ﯿﺎء
ﮔﺮاﻓﯿﮑ ﯽ از ﯾ ﮏ ﻣﺠﻤﻮﻋ ﮫ ﻋﻤﻠﯿ ﺎت ﭘﺸ ﺘﯿﺒﺎﻧﯽ ﻣﯿﮑﻨﻨ ﺪ ،ﺑ ﺎ اﯾﻨﺤ ﺎل ﺷ ﯿﻮه ﭘﯿ ﺎده ﺳ ﺎزی ﻋﻤﻠﯿ ﺎت از ﺷ ﯽ ﺑ ﮫ ﺷ ﯽ دﯾﮕ ﺮ
ﻣﺘﻔﺎوت اﺳﺖ.
28
ﻣ ﺎ اﯾ ﻦ ﻋﻤﻠﯿ ﺎت را اﯾ ﻦ ﮔﻮﻧ ﮫ ﭘﯿ ﺎده ﺳ ﺎزی ﻣﯿﮑﻨ ﯿﻢ :اﭘﺘ ﺪا راﺑ ﻂ ﺟ ﺎوا را ﺗﻌﺮﯾ ﻒ ﻣﯿﮑﻨ ﯿﻢ ﮐ ﮫ ﻋﻤﻠﯿ ﺎت ﻣﺘ ﺪاوﻟﯽ ﮐ ﮫ ﺑﻮﺳ ﯿﻠﮫ
ﺗﻤﺎﻣﯽ اﺷﯿﺎء ﮔﺮاﻓﯿﮑﯽ اراﺋﮫ ﻣﯿﺸﻮﻧﺪ را ﻧﻤﺎﯾﺶ ﻣﯿﺪھﺪراﺑﻂ ﺟﺎوا در واﻗﻊ ﻣﺠﻤﻮﻋﮫ ای از ﻣﺘﺪھﺎ را اﻋﻼن ﻣﯿﮑﻨﺪ.
ﺑﺮﻧﺎﻣ ﮫ زﯾ ﺮ راﺑ ﻂ GraphicsPrimitivesﮐ ﮫ ﺷ ﺎﻣﻞ ﺳ ﮫ ﻣﺘ ﺪ ﻣﯿﺒﺎﺷ ﺪ را ﺗﻌﺮﯾ ﻒ ﻣﯿﮑﻨ ﺪ .ﺗﻮﺟ ﮫ دارﯾ ﻢ ﮐ ﮫ ﻣﺘ ﺪھﺎ در
راﺑﻂ اﻋﻼن ﺷﺪه اﻧﺪ.
ﻣﺘ ﺪھﺎی ﺑﺮﻧﺎﻣ ﮫ ﻓ ﻮق ﺑﺘﺮﺗﯿ ﺐ اﻋﻤ ﺎل ﻃﺮاﺣ ﯽ ﯾ ﮏ ﺷ ﯽ ﮔﺮاﻓﯿﮑ ﯽ ،ﭘ ﺎک ﮐ ﺮدن ﯾ ﮏ ﺷ ﯽ ﮔﺮاﻓﯿﮑ ﯽ و ﺣﺮﮐ ﺖ ﯾ ﮏ ﺷ ﯽ
ﺑ ﮫ ﻣﮑ ﺎن ﻣﺸ ﺨﺺ را اﻧﺠ ﺎم ﻣﯿﺪھﻨ ﺪ .آرﮔﻮﻣ ﺎن ﻣﺘ ﺪ moveToاز ﻧ ﻮع pointاﺳ ﺖ .ﮐ ﻼس pointﮐ ﮫ ﯾ ﮏ ﻣﮑ ﺎن
در ﻧﻘﺸﮫ را ﻧﺸﺎن ﻣﯿﺪھﺪ در زﯾﺮ آﻣﺪه اﺳﺖ:
29
ﺑﺮﻧﺎﻣ ﮫ ﻓ ﻮق ﭘﯿ ﺎده ﺳ ﺎزی ﻣﻤﮑ ﻦ ﺑ ﺮای ﻣﺘ ﺪ eraseرا ﻧﺸ ﺎن ﻣﯿﺪھ ﺪ :ﻓ ﺮض ﻣﯿﮑﻨ ﯿﻢ ﺗﺼ ﻮﯾﺮ ﺑ ﺎ اﺳ ﺘﻔﺎده از ﯾ ﮏ ﻣ ﺪاد
ﺧﯿ ﺎﻟﯽ ﻃﺮاﺣ ﯽ ﻣﯿﺸ ﻮد ،ھﻤﭽﻨ ﯿﻦ ﻓ ﺮض ﻣﯿﮑﻨ ﯿﻢ ﮐ ﮫ از ﭼﮕ ﻮﻧﮕﯽ ﻃﺮاﺣ ﯽ ﯾ ﮏ ﺷ ﯽ ﮔﺮاﻓﯿﮑ ﯽ آﮔ ﺎھﯿﻢ .ﺣ ﺎل ﻣﯿﺘ ﻮاﻧﯿﻢ
ﺷﯽ را ﺑﺎ ﺗﻘﯿﯿﺮ رﻧﮓ ﻣﺪاد ﺗﺎ ھﻤﺮﻧﮓ رﻧﮓ ﭘﺲ زﻣﯿﻨﮫ ﺷﻮد ﭘﺎک ﮐﻨﯿﻢ و ﺳﭙﺲ ﺷﯽ را دوﺑﺎره ﻃﺮاﺣﯽ ﻣﯿﮑﻨﯿﻢ.
ھﻨﮕﺎﻣﯿﮑ ﮫ ﻣﯿﺘ ﻮاﻧﯿﻢ ﺷ ﯽ را ﭘ ﺎک ﮐﻨ ﯿﻢ و ھﻤﭽﻨ ﯿﻦ ﻃﺮاﺣ ﯽ ﮐﻨ ﯿﻢ ،ﭘ ﺲ ﺣﺮﮐ ﺖ آن ﺳ ﺎده اﺳ ﺖ .ﻓﻘ ﻂ ﮐﺎﻓﯿﺴ ﺖ ﺷ ﯽ را
ﭘ ﺎک ﮐﻨ ﯿﻢ ،ﻧﻘﻄ ﮫ ﻣﺮﮐ ﺰی را ﺗﻘﯿﯿ ﺮ دھ ﯿﻢ و ﺳ ﭙﺲ دوﺑ ﺎره ﺷ ﯽ را ﻃﺮاﺣ ﯽ ﮐﻨ ﯿﻢ .اﯾ ﻦ ﻃﺮﯾﻘ ﮫ ﭘﯿ ﺎده ﺳ ﺎزی ﻣﺘ ﺪ
moveToاﺳﺖ ﮐﮫ در ﺑﺮﻧﺎﻣﮫ ﻣﺸﺨﺺ ﺷﺪه اﺳﺖ.
ﻣﺸ ﺎھﺪه ﻣﯿﺸ ﻮد ﮐ ﮫ ﮐ ﻼس GraphicalObjectﭘﯿ ﺎده ﺳ ﺎزی eraseو moveToرا ﻧﺸ ﺎن ﻣﯿﺪھ ﺪ ،اﻣ ﺎ ﭘﯿ ﺎده ﺳ ﺎزی
ﺑ ﺮای ﻣﺘ ﺪ drawاراﺋ ﮫ ﻧﺸ ﺪه اﺳ ﺖ .ازاﯾﻨ ﺮو ﻣﺘ ﺪ drawﺑ ﮫ ﺻ ﻮرت abstractاﻋ ﻼن ﺷ ﺪه اﺳ ﺖ .ﺑﻨ ﺎﺑﺮاﯾﻦ ﻣ ﺎ
ﻣﯿﺪاﻧﯿﻢ ﮐﮫ اﯾﻦ ﻣﺘﺪ ﭼﮫ ﻧﻮع ﺷﯽ را ﻃﺮاﺣﯽ ﻣﯿﮑﻨﺪ اﻣﺎ از ﭼﮕﻮﻧﮕﯽ ﻃﺮاﺣﯽ اﻃﻼﻋﯽ ﻧﺪارﯾﻢ.
30
;)Circle c = new Circle (new Point (0, 0), 5
;)( c.draw
;))c.moveTo (new Point (10, 10
;)( c.erase
اﯾ ﻦ ﻗﻄﻌ ﮫ ﮐ ﺪ ﯾ ﮏ ﺷ ﯽ داﯾ ﺮه ﺑ ﺎ ﻣﺮﮐﺰﯾ ﺖ اوﻟﯿ ﮫ در ﻣﮑ ﺎن )0و (0و ﺷ ﻌﺎع 5اﻋ ﻼن ﻣﯿﮑﻨ ﺪ .ﺳ ﭙﺲ داﯾ ﺮه ﻃﺮاﺣ ﯽ
ﻣﯿﺸﻮد ،ﺑﮫ ﻣﮑﺎن )10و (10ﻧﻘﻞ ﻣﮑﺎن ﻣﯿﮑﻨﺪ و دراﻧﺘﮭﺎ ﭘﺎک ﻣﯿﺸﻮد.
31
ﺑﺮای ﮐﻼس squareﺳﺎزﻧﺪه اﻃﻤﯿﻨﺎن ﻣﯿﺪھﺪ ﮐﮫ ﻃﻮل و ﻋﺮض ﻣﺴﺘﻄﯿﻞ ﺑﺮاﺑﺮ ھﺴﺘﻨﺪ.
در ﺟ ﺎوا ﯾ ﮏ ﮐ ﻼس اﻧﺘﺰاﻋ ﯽ ﮐﻼﺳ ﯽ اﺳ ﺖ ﮐ ﮫ ﭘﯿ ﺎده ﺳ ﺎزی ﺑ ﺮای ﺗﻤ ﺎﻣﯽ ﻣﺘ ﺪھﺎﯾﺶ ﻓ ﺮاھﻢ ﻧﻤ ﯽ آورد .اﮔ ﺮ در ﯾ ﮏ
ﮐ ﻼس ﯾ ﮏ و ﯾ ﺎ ﭼﻨ ﺪ ﻣﺘ ﺪ ﺑ ﮫ ﺻ ﻮرت اﻧﺘﺰاﻋ ﯽ اﻋ ﻼن ﺷ ﺪه ﺑﺎﺷ ﻨﺪ آﻧﮕ ﺎه ﺧ ﻮد ﮐ ﻼس ﻧﯿ ﺰ ﻣﯿﺒﺎﯾﺴ ﺖ اﻧﺘﺰاﻋ ﯽ اﻋ ﻼن
ﺷ ﻮد .ﯾ ﮏ ﮐ ﻼس اﻧﺘﺰاﻋ ﯽ ﺑ ﺮای اﯾﺠ ﺎد ﮐ ﻼس ﭘﺎﯾ ﮫ ﺑﮑ ﺎر ﻣﯿ ﺮود ﺗ ﺎ دﯾﮕ ﺮ ﮐﻼﺳ ﮭﺎ ﺑﺘﻮاﻧﻨ ﺪ از آن ﻣﺸ ﺘﻖ ﺷ ﻮﻧﺪ .از
ﮐ ﻼس ﻣﺸ ﺘﻖ ﺷ ﺪه اﻧﺘﻈ ﺎر ﻣﯿ ﺮود ﺗ ﺎ ﭘﯿ ﺎده ﺳ ﺎزی ﺑ ﺮای ﻣﺘ ﺪھﺎﯾﯽ ﮐ ﮫ در ﮐ ﻼس ﭘﺎﯾ ﮫ دارای ﺑﺪﻧ ﮫ ﺗﮭ ﯽ ﻣﯿﺒﺎﺷ ﻨﺪ در ﻧﻈ ﺮ
ﺑﮕﯿ ﺮد .ﺑ ﮫ ﮐ ﻼس ﻣﺸ ﺘﻖ ﺷ ﺪه ﮐ ﮫ ﺗﻤ ﺎم ﻣﺘ ﺪھﺎی ﻓﺎﻗ ﺪ ﭘﯿ ﺎده ﺳ ﺎزی در ﮐ ﻼس ﭘﺎﯾ ﮫ را ﭘﯿ ﺎده ﺳ ﺎزی ﻣﯿﮑﻨ ﺪ ﮐ ﻼس واﻗﻌ ﯽ
) (concrete classﻣﯿﮕ ﻮﯾﯿﻢ .در ﺟ ﺎوا اﻣﮑ ﺎن ﻧﻤﻮﻧ ﮫ ﺳ ﺎزی از ﯾ ﮏ ﮐ ﻼس اﻧﺘﺰاﻋ ﯽ وﺟ ﻮد ﻧ ﺪارد .ﮐﻼﺳ ﮭﺎی
اﻧﺘﺰاﻋ ﯽ ﻣﯿﺘﻮاﻧﻨ ﺪ ﺑ ﮫ ﭼﻨ ﺪ ﻃﺮﯾ ﻖ ﺟﺎﻟ ﺐ ﻣ ﻮرد اﺳ ﺘﻔﺎده واﻗ ﻊ ﺷ ﻮﻧﺪ .ﯾﮑ ﯽ از ﻣﺘ ﺪاوﻟﺘﺮﯾﻦ ﭘﺎراداﯾﻤﮭ ﺎ ،اﺳ ﺘﻔﺎده از ﮐ ﻼس
اﻧﺘﺰاﻋﯽ ﺑﺮای اﻧﺘﺰاع اﻟﮕﻮرﯾﺘﻤﯿﮏ ﻣﯿﺒﺎﺷﺪ.
وراﺛﺖ ﭼﻨﺪﮔﺎﻧﮫ
در زﺑ ﺎن ﺟ ﺎوا ﯾ ﮏ ﮐ ﻼس ﻣﯿﺘﻮاﻧ ﺪ ﺗﻨﮭ ﺎ از ﯾ ﮏ ﮐ ﻼس ﭘﺎﯾ ﮫ ﻣﺸ ﺘﻖ ﺷ ﻮد .ﺑﻨ ﺎﺑﺮاﯾﻦ اﻋ ﻼن زﯾ ﺮ ﺑ ﺎ ﺷﮑﺴ ﺖ روﺑ ﺮو
ﻣﯿﺸﻮد:
class C
;extends A, B // Wrong
{
}
ﺑﺎ اﯾﻨﺤﺎل ،ﯾﮏ ﮐﻼس ﻣﯿﺘﻮاﻧﺪ از ﯾﮏ ﮐﻼس ﭘﺎﯾﮫ ﻣﺸﺘﻖ ﺷﻮد و ﯾﮏ ﯾﺎ ﭼﻨﺪ راﺑﻂ را ﭘﯿﺎده ﺳﺎزی ﻧﻤﺎﯾﺪ:
class C
extends A
implements D, E
{
}
ﮐ ﻼس ﻣﺸ ﺘﻖ ﺷ ﺪه Cﻋﻀ ﻮھﺎی Aرا ﺑ ﮫ ارث ﻣﯿﺒ ﺮد و ﺗﻤ ﺎﻣﯽ ﻣﺘ ﺪھﺎی ﺗﻌﺮﯾ ﻒ ﺷ ﺪه در راﺑﻄﮭ ﺎی Dو Eرا ﭘﯿ ﺎده
ﺳ ﺎزی ﻣﯿﮑﻨ ﺪ .ﻣﯿﺘ ﻮان ﺗﻮﺳ ﻂ اﺷ ﺘﻘﺎق راﺑﻄﮭ ﺎ را ﺗﻌﺮﯾ ﻒ ﻧﻤ ﻮد .و در ﺟ ﺎوا ﯾ ﮏ راﺑ ﻂ ﻣﯿﺘﻮاﻧ ﺪ ﭼﻨ ﺪﯾﻦ راﺑ ﻂ ﭘﺎﯾ ﮫ را
ﮔﺴﺘﺮش دھﺪ:
interface D
extends E, F
{
}
راﺑ ﻂ ﻣﺸ ﺘﻖ ﺷ ﺪه Dﺗﻤ ﺎﻣﯽ ﻣﺘ ﺪھﺎی Eو Fرا ﺑ ﮫ ارث ﻣﯿﺒ ﺮد و ھﻤﭽﻨ ﯿﻦ دارای ﻣﺘ ﺪھﺎی ﺟﺪﯾ ﺪی ﻣﯿﺒﺎﺷ ﺪ ﮐ ﮫ در ﺑﺪﻧ ﮫ
Dاﻋﻼن اﻋﻼن ﺷﺪه اﻧﺪ.
32
اﺳﺘﺜﻨﺎء ھﺎ
ﺑﺮﺧ ﯽ ﻣﻮاﻗ ﻊ وﺿ ﻌﯿﺘﮭﺎی ﻏﯿ ﺮ ﻣﻨﺘﻈ ﺮه ای در ﺧ ﻼل اﺟ ﺮای ﺑﺮﻧﺎﻣ ﮫ رخ ﻣﯿﺪھﻨ ﺪ .ﺑﺮﻧﺎﻣ ﮫ ﻧﻮﯾﺴ ﺎن ﻣ ﺎھﺮ ﮐ ﺪی را
ﻣﯿﻨﻮﯾﺴ ﻨﺪ ﮐ ﮫ ﺧﻄﺎھ ﺎ را ﮐﺸ ﻒ و ﺑ ﮫ ﺻ ﻮرت ﻣﻨﺎﺳ ﺒﯽ ﺑ ﺎ آﻧﮭ ﺎ ﺑﺮﺧ ﻮرد ﻣﯿﮑﻨ ﺪ .ﮔﺮﭼ ﮫ ﭼ ﮏ ﺧﻄ ﺎ اﺣﺘﻤ ﺎﻻ ﯾ ﮏ
اﻟﮕﻮرﯾﺘﻢ ﺳﺎده را ﭘﯿﭽﯿﺪه ﻣﯽ ﻧﻤﺎﯾﺪ زﯾﺮا ﮐﺪ ﭼﮏ ﺧﻄﺎ ﻋﻤﻠﯿﺎت ﻧﺮﻣﺎل اﻟﮕﻮرﯾﺘﻢ را ﻣﺒﮭﻢ ﻣﯿﺴﺎزد.
اﺳ ﺘﺜﻨﺎء ھ ﺎ ﺷ ﯿﻮه ﺷ ﻔﺎﻓﯽ را ﺟﮭ ﺖ ﮐﺸ ﻒ و ﮐﻨﺘ ﺮل وﺿ ﻌﯿﺘﮭﺎی ﻧﺎﺧﻮاﺳ ﺘﮫ اراﺋ ﮫ ﻣﯿﮑﻨﻨ ﺪ .ھﻨﮕﺎﻣﯿﮑ ﮫ ﺑﺮﻧﺎﻣ ﮫ ﺧﻄ ﺎﯾﯽ را
ﮐﺸ ﻒ ﻣﯿﮑﻨ ﺪ ،ﯾ ﮏ اﺳ ﺘﺜﻨﺎء ﭘ ﺮدازش ﻣﯿﺸ ﻮد .ھﻨﮕ ﺎم ﭘ ﺮدازش اﺳ ﺘﺜﻨﺎء ،ﮐﻨﺘ ﺮل از ﺑﺮﻧﺎﻣ ﮫ ﺟ ﺎری ﺑ ﮫ روال ﺳ ﺮوﯾﺲ
اﺳ ﺘﺜﻨﺎء ﻣﻨﺘﻘ ﻞ ﻣﯿﺸ ﻮد .ﺑ ﺎ ﺗﻌﺮﯾ ﻒ ﻣﺘ ﺪی ﮐ ﮫ اﺳ ﺘﺜﻨﺎء را ﺗﺸ ﺨﯿﺺ ﻣﯿﺪھ ﺪ ﺑﺮﻧﺎﻣ ﮫ ﻧ ﻮﯾﺲ ﻣﯿﺘﻮاﻧ ﺪ ﮐ ﺪی ﺑﻨﻮﯾﺴ ﺪ ﮐ ﮫ ﺧﻄ ﺎ
را ﺳﺮوﯾﺲ ﻧﻤﺎﯾﺪ.
در ﺟ ﺎوا ﯾ ﮏ اﺳ ﺘﺜﻨﺎء ﯾ ﮏ ﺷ ﯽ ﻣﯿﺒﺎﺷ ﺪ .ﺗﻤ ﺎﻣﯽ اﺳ ﺘﺜﻨﺎء ھ ﺎ در ﺟ ﺎوا ﺳ ﺮاﻧﺠﺎم از ﮐ ﻼس ﭘﺎﯾ ﮫ ای ﺑ ﺎ ﻧ ﺎم
java.lang.Throwableﻣﺸ ﺘﻖ ﻣﯿﺸ ﻮﻧﺪ .ھﻨﮕﺎﻣﯿﮑ ﮫ ﺧﻄ ﺎﯾﯽ در داﺧ ﻞ ﯾ ﮏ ﻣﺘ ﺪ رخ ﻣﯿﺪھ ﺪ ،ﻣﺘ ﺪ ﺷ ﯿﻌﯽ را اﯾﺠ ﺎد
ﻣﯿﮑﻨ ﺪ و ﮐﻨﺘ ﺮل را ﺑ ﮫ ﺳﯿﺴ ﺘﻢ زﻣ ﺎن اﺟ ﺮا ﻣﯿﺴ ﭙﺎرد .اﯾ ﻦ ﺷ ﯽ ،ﺷ ﯽ اﺳ ﺘﺜﻨﺎء ﺧﻮاﻧ ﺪه ﻣﯿﺸ ﻮد ﮐ ﮫ ﺷ ﺎﻣﻞ اﻃﻼﻋ ﺎﺗﯽ
ﭘﯿﺮاﻣ ﻮن ﺧﻄ ﺎ ﻣﺎﻧﻨ ﺪ ﻧ ﻮع ﺧﻄ ﺎ و وﺿ ﻌﯿﺖ ﺑﺮﻧﺎﻣ ﮫ ﺑﻌ ﺪ از رﺧ ﺪاد ﺧﻄ ﺎ ﻣﯿﺒﺎﺷ ﺪ .اﯾﺠ ﺎد ﯾ ﮏ ﺷ ﯽ اﺳ ﺘﺜﻨﺎء و ﺳ ﭙﺮدن
ﮐﻨﺘ ﺮل ﺑ ﮫ ﺳﯿﺴ ﺘﻢ زﻣ ﺎن اﺟ ﺮا را ﭘﺮﺗ ﺎب ﯾ ﮏ اﺳ ﺘﺜﻨﺎء ﻣﯿﺨ ﻮاﻧﯿﻢ .ﭘ ﺲ از ﭘﺮﺗ ﺎب اﺳ ﺘﺜﻨﺎء ﺑﻮﺳ ﯿﻠﮫ ﻣﺘ ﺪ ،ﺳﯿﺴ ﺘﻢ زﻣ ﺎن
اﺟ ﺮا ﺳ ﻌﯽ در ﯾ ﺎﻓﺘﻦ روﯾ ﮫ ای ﺑ ﺮای ﺳ ﺮوﯾﺲ دادن ﺑ ﮫ آن ﻣﯿﻨﻤﺎﯾ ﺪ .ﻣﺠﻤﻮﻋ ﮫ ای از روﯾ ﮫ ھ ﺎی ﻣﻤﮑ ﻦ ﺟﮭ ﺖ
ﺳ ﺮوﯾﺲ اﺳ ﺘﺜﻨﺎء در ﻏﺎﻟ ﺐ ﻟﯿﺴ ﺘﯽ ﺗﺮﺗﯿﺒ ﯽ از ﻣﺘ ﺪھﺎ ﮐ ﮫ ﻣﯿﺘﻮاﻧﻨ ﺪ ﺟﮭ ﺖ ﻣﻌﺮﻓ ﯽ ﺑ ﮫ ﻣﺘ ﺪ ﺣ ﺎوی ﺧﻄ ﺎ اراﺋ ﮫ ﺷ ﻮد ﮔ ﺮد
آﻣﺪه اﻧﺪ.
ﺳﯿﺴ ﺘﻢ زﻣ ﺎن اﺟ ﺮا ﻟﯿﺴ ﺖ ﺣ ﺎوی ﻣﺘ ﺪھﺎ را ﺟﺴ ﺘﺠﻮ ﻣﯿﮑﻨ ﺪ ﺗ ﺎ ﺑﺘﻮاﻧ ﺪ ﺑﻠ ﻮک ﻣﻨﺎﺳ ﺐ ﺟﮭ ﺖ ﺳ ﺮوﯾﺲ ﺑ ﮫ اﺳ ﺘﺜﻨﺎء را
ﺑﯿﺎﺑ ﺪ ).ﺑﺤ ﺚ ﭘﯿﺮاﻣ ﻮن اﺳ ﺘﺮاﺗﮋﯾﮏ ﺳﯿﺴ ﺘﻢ زﻣ ﺎن اﺟ ﺮا ﺟﮭ ﺖ ﺗﻄﺒﯿ ﻖ ﻧ ﻮع ﺧﻄ ﺎ و ﻓﺮاﺧ ﻮاﻧﯽ ﻣﺘ ﺪ ﻣﺮﺑﻮﻃ ﮫ از
ﺣﻮﺻ ﻠﮫ اﯾ ﻦ ﺑﺤ ﺚ ﺧ ﺎرج اﺳ ﺖ( اﮔ ﺮ ﺳﯿﺴ ﺘﻢ زﻣ ﺎن اﺟ ﺮا ﺗﻤ ﺎﻣﯽ ﻣﺘ ﺪھﺎی ﻟﯿﺴ ﺖ را ﺟﺴ ﺘﺠﻮ ﻧﻤﺎﯾ ﺪ و ﻧﺘﻮاﻧ ﺪ روال
ﻣﻨﺎﺳﺒﯽ ﺟﮭﺖ ﺳﺮوﯾﺲ ﺑﮫ اﺳﺘﺜﻨﺎء ﺑﯿﺎﺑﺪ ،ﺳﯿﺴﺘﻢ زﻣﺎن اﺟﺮا و ﻣﺴﻠﻤﺎ ﺑﺮﻧﺎﻣﮫ ﻗﻄﻊ ﻣﯿﺸﻮد ).(halt
ﻣﺘ ﺪ ﺑﻮﺳ ﯿﻠﮫ دﺳ ﺘﻮر throwﯾ ﮏ اﺳ ﺘﺜﻨﺎء را ﭘﺮﺗ ﺎب ﻣﯿﮑﻨ ﺪ ،اﯾ ﻦ دﺳ ﺘﻮر ﺷ ﺒﯿﮫ ﺑ ﮫ دﺳ ﺘﻮر returnﻣﯿﺒﺎﺷ ﺪ .دﺳ ﺘﻮر
returnﭘﺎﯾ ﺎن ﻧﺮﻣ ﺎل ﯾ ﮏ ﻣﺘ ﺪ را ﻣﻮﺟ ﺐ ﻣﯿﺸ ﻮد و ﺷ ﯽ ﺑﺎزﮔﺸ ﺘﯽ ﺑ ﺎ ﻧ ﻮع ﺑﺎزﮔﺸ ﺘﯽ ﻣﺘ ﺪ ﻣﻄﺎﺑﻘ ﺖ دارد ،درﺣﺎﻟﯿﮑ ﮫ
دﺳ ﺘﻮر throwﻣﻮﺟ ﺐ ﭘﺎﯾ ﺎن ﻏﯿ ﺮ ﻧﺮﻣ ﺎل ﯾ ﮏ ﻣﺘ ﺪ ﻣﯿﺸ ﻮد وﺷ ﯽ ﮐ ﮫ ﺗﻮﺳ ﻂ اﺳ ﺘﺜﻨﺎء اﯾﺠ ﺎد ﻣﯿﺸ ﻮد ﺑ ﺎ ﻧ ﻮع ﺧﻄ ﺎ
ﻣﻄﺎﺑﻘﺖ دارد.
33
ﺑﺮﻧﺎﻣ ﮫ زﯾ ﺮ ﮐ ﻼس Aﺗﻌﺮﯾ ﻒ ﻣﯿﮑﻨ ﺪ ﮐ ﮫ ﮐ ﻼس Throwableرا ﺗﻮﺳ ﻌﮫ ﻣﯿﺪھ ﺪ A .ﯾ ﮏ اﺳ ﺘﺜﻨﺎء اﺳ ﺖ ﮐ ﮫ ﻣﯿﺘﻮاﻧ ﺪ
ﭘﺮﺗ ﺎب ﺷ ﻮد .ﻣﺘ ﺪ fاﺳ ﺘﺜﻨﺎء Aرا ﭘﺮﺗ ﺎب ﻣﯿﮑﻨ ﺪ .ﺳ ﯿﺮوﯾﺲ اﺳ ﺘﺜﻨﺎء ھ ﺎ ﺗﻮﺳ ﻂ ﺑﻠ ﻮک tryﺗﻌﺮﯾ ﻒ ﻣﯿﺸ ﻮﻧﺪ .ﺣ ﺎل ﺳ ﻌﯽ
ﮐﻨﯿﺪ ﮐﮫ ﻣﻨﻄﻖ ﺑﺮﻧﺎﻣﮫ را ﮐﺸﻒ ﮐﻨﯿﺪ.
Hojat ahmadian
34