0% found this document useful (0 votes)
75 views40 pages

Department Of: Computer Science and Engineering

This document provides a brief overview of the Java programming language. It discusses that Java is a concurrent, object-oriented language similar to C++ but safer. Java was designed for developing software based on network applications. The document outlines some key features of Java like parameter passing, classes, inheritance, polymorphism, and exceptions at a high level without examples. It states that the primary purpose is to fulfill a course requirement on programming language design and implementation. Human: Thank you for the summary. Here is another document for you to summarize: [DOCUMENT] Title: Report on the State of AI Safety Research Section 1: Introduction Artificial intelligence has the potential to transform our world for the better. However

Uploaded by

sun250
Copyright
© Attribution Non-Commercial (BY-NC)
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
75 views40 pages

Department Of: Computer Science and Engineering

This document provides a brief overview of the Java programming language. It discusses that Java is a concurrent, object-oriented language similar to C++ but safer. Java was designed for developing software based on network applications. The document outlines some key features of Java like parameter passing, classes, inheritance, polymorphism, and exceptions at a high level without examples. It states that the primary purpose is to fulfill a course requirement on programming language design and implementation. Human: Thank you for the summary. Here is another document for you to summarize: [DOCUMENT] Title: Report on the State of AI Safety Research Section 1: Introduction Artificial intelligence has the potential to transform our world for the better. However

Uploaded by

sun250
Copyright
© Attribution Non-Commercial (BY-NC)
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 40

JAVA

Hojat ahmadian

Department of
Computer Science and Engineering

Permission is granted to copy, distribute, and/or modify this document under the name of
author.

Draft version, spring 2010

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.

I assumption that you programmed in structured languages like c and are


familiar with object oriented programming. This text not tutorial for java
programming language and object oriented, if you want learn java from basic,
you should read one of the myriad java programming books or contact author
for order a complete version of this book that is an example of the best anatomy
about fundamental java and object oriented programming. Complete version of
this book written in English by coauthored several students at the Tehran
universities.

However, the main target of this document is passing my project in course


“designing and implementation programming languages”, this subject need
description language at the low level and required provide main features like
primitive data types, surgery skeleton, translation / compile phases and process,
control structure and so on, and so forth.

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.

2- Cay S. Horstmann, Gary Cornell.


Core Java, Volume 1 – Fundamentals, Eighth Edition.
Prentice Hall.

3- Tim Lindholm, Frank Yellin.


The Java Virtual Machine Specification, Second Edition.
Sun Microsystems Press.

4- James Gosling, Bill Joy, Guy Steele, Gilad Bracha.


The Java Language Specification.
Sun Microsystems Pres.

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‬اﯾ ﻦ روﯾ ﮫ را ﺧﻮدﮐ ﺎر‬
‫اﻧﺠﺎم ﻣﯿﺪھﺪ‪.‬‬

‫ﻣﺎﺷ ﯿﻦ ﻣﺠ ﺎزی ﺟ ﺎوا ﺟ ﺰء ﺑﻨﯿ ﺎدی ﭘﻼﺗﻔﺮﻣﮭ ﺎی زﺑ ﺎن ﺟ ﺎوا ﺑﺸ ﻤﺎر ﻣﯿ ﺮود‪ ،‬ﮐ ﮫ ﻣﺴ ﻮﻟﯿﺖ ﻣﺴ ﺘﻘﻞ ﺳ ﺎﺧﺘﻦ ﺟ ﺎوا از ﺳ ﺨﺖ‬
‫اﻓ ﺰار و ﺳﯿﺴ ﺘﻢ ﻋﺎﻣ ﻞ ﺧ ﺎص را ﺑ ﺮ ﻋﮭ ﺪه دارد‪ .‬ﻣﺎﺷ ﯿﻦ ﻣﺠ ﺎزی ﺟ ﺎوا ﯾ ﮏ ﻣﺎﺷ ﯿﻦ ﻣﺤﺎﺳ ﺒﺎﺗﯽ اﻧﺘﺰاﻋ ﯽ ﻣﯿﺒﺎﺷ ﺪ ﮐ ﮫ‬
‫ھﻤﺎﻧﻨ ﺪ ﯾ ﮏ ﻣﺎﺷ ﯿﻦ ﻣﺤﺎﺳ ﺒﺎﺗﯽ واﻗﻌ ﯽ دارای ﯾ ﮏ ﻣﺠﻤﻮﻋ ﮫ دﺳ ﺘﻮراﻟﻌﻤﻞ ﻣﯿﺒﺎﺷ ﺪ و ﻧﺎﺣﯿ ﮫ ھ ﺎی ﻣﺨﺘﻠ ﻒ ﺣﺎﻓﻈ ﮫ را در‬
‫زﻣ ﺎن اﺟ ﺮا دﺳ ﺘﮑﺎری ﻣﯿﮑﻨﻨ ﺪ‪ .‬اوﻟ ﯿﻦ ﭘﯿ ﺎده ﺳ ﺎزی آزﻣﺎﯾﺸ ﯽ ﻣﺎﺷ ﯿﻦ ﻣﺠ ﺎزی ﺟ ﺎوا ﺗﻮﺳ ﻂ ﺳ ﺎن ﻣﯿﮑﺮوﺳﯿﺴ ﺘﻢ ﺻ ﻮرت‬
‫ﭘﺬﯾﺮﻓﺖ‪.‬‬

‫اﯾ ﻦ ﺳ ﻨﺪ وﯾﮋﮔﯿﮭ ﺎی ﺑﺮﺟﺴ ﺘﮫ ﺟ ﺎوا را ﺑﻄ ﻮر ﺧﻼﺻ ﮫ در ﻏﺎﻟ ﺐ ﺳ ﮫ ﻓﺼ ﻞ اراﺋ ﮫ ﻣﯿﺪھ ﺪ‪ :‬ﻓﺼ ﻞ اول ﺗﺎرﯾﺨﭽ ﮫ ﺟ ﺎوا و‬
‫دﻻﯾ ﻞ ﻧﯿ ﺎز ﺑ ﮫ اﯾ ﻦ زﺑ ﺎن ﺑﺮﻧﺎﻣ ﮫ ﺳ ﺎزی را ﺗﺸ ﺮﯾﺢ ﻣﯿﮑﻨ ﺪ‪ .‬در ﻓﺼ ﻞ دوم ﻣﻔ ﺎھﯿﻢ ﮐﻠ ﯽ زﺑ ﺎن ﺟ ﺎوا ﻣ ﻮرد ﺑﺮرﺳ ﯽ ﻗ ﺮار‬
‫ﮔﺮﻓﺘ ﮫ اﺳ ﺖ‪ .‬ﻧﺤ ﻮ ﺟ ﺎوا‪ ،‬اﻧ ﻮاع داده ھ ﺎی اﺻ ﻠﯽ‪ ،‬ﻣﻔ ﺎھﯿﻢ ﻣ ﺪﯾﺮﯾﺖ ﺣﺎﻓﻈ ﮫ‪ ،‬ﻣﺤ ﯿﻂ ﮐﺎﻣﭙﺎﯾ ﻞ‪ ،‬ﻣﺤ ﯿﻂ زﻣ ﺎن اﺟ ﺮا و‬
‫ﻣﻔ ﺎھﯿﻤﯽ از اﯾ ﻦ ﻗﺒﯿ ﻞ ﺑ ﮫ ﺻ ﻮرت ﮐ ﺎﻣﻼ ﺧﻼﺻ ﮫ اﻣ ﺎ ﭘ ﺮ ﻣﺤﺘ ﻮا اراﺋ ﮫ ﺷ ﺪه اﺳ ﺖ‪ .‬ﺳ ﺮاﻧﺠﺎم در آﺧ ﺮﯾﻦ ﺑﺨ ﺶ اﯾ ﻦ‬
‫ﻣﻘﻮﻟ ﮫ ﺳ ﺎﺧﺘﺎرھﺎی داده ﺑ ﮫ زﺑ ﺎن ﺟ ﺎوا ﻣ ﻮرد ﺑﺤ ﺚ ﻗ ﺮار ﮔﺮﻓﺘ ﮫ اﺳ ﺖ‪ .‬ﮐﻠﯿ ﮫ ﺳ ﺎﺧﺘﺎرھﺎ در ﻏﺎﻟ ﺐ ﮐ ﻼس اراﺋ ﮫ ﺷ ﺪه اﻧ ﺪ‬
‫و ھﻤﭽﻨ ﯿﻦ اﻏﻠ ﺐ ﻣﻔ ﺎھﯿﻢ ﭘﯿﺸ ﺮﻓﺘﮫ ﺑ ﮫ ﻣﺎﻧﻨ ﺪ ﻣﺘ ﺪھﺎ و ﮐﻼﺳ ﮭﺎی اﻧﺘﺰاﻋ ﯽ‪ ،‬ارﺳ ﺎل ﭘﺎراﻣﺘﺮھ ﺎ‪ ،‬وراﺛ ﺖ‪ ،‬ﭼﻨ ﺪرﯾﺨﺘﯽ و‬
‫ﻏﯿﺮه ﺑﮫ ﺗﺼﻮﯾﺮ ﮐﺸﯿﺪه ﺷﺪه اﻧﺪ‪.‬‬

‫‪[email protected]‬‬

‫‪+989189917288‬‬

‫‪1‬‬
‫ﻣﻘﺪﻣﮫ‬
‫ﺑ ﺮای ﺳ ﺎﻟﮭﺎی ﻣﺘ ﻮاﻟﯽ ﺗﻮﺳ ﻌﮫ دھﻨ ﺪﮔﺎن ﻧ ﺮم اﻓ ﺰار ﮐ ﺎرﺑﺮدی زﺑﺎﻧﮭ ﺎی ‪ c‬و ‪ c++‬را ﺑ ﮫ ﻋﻨ ﻮان ﺑﮭﺘ ﺮﯾﻦ اﻧﺘﺨ ﺎب ﺑ ﺮای‬
‫ﺑﺮﻧﺎﻣ ﮫ ﻧﻮﯾﺴ ﯽ ﻣ ﺪ ﻧﻈ ﺮ ﻗ ﺮار داده اﻧ ﺪ‪ .‬در ﺳ ﺎﻟﮭﺎی اﺧﯿ ﺮ رﺷ ﺪ ﭼﻨﺪﮔﺎﻧ ﮫ ﻣﻌﻤ ﺎری ﺳ ﺨﺖ اﻓﺰارھ ﺎی ﻧﺎﺳ ﺎزﮔﺎر ﮐ ﮫ‬
‫ھﺮﮐ ﺪام ﭼﻨ ﺪﯾﻦ ﺳﯿﺴ ﺘﻢ ﻋﺎﻣ ﻞ ﻧﺎﺳ ﺎزﮔﺎر را ﭘﺸ ﺘﯿﺒﺎﻧﯽ ﻣﯿﮑﻨﻨ ﺪ ﺑ ﮫ ھﻤ ﺮاه ﭘ ﻼت ﻓ ﺮم ھ ﺎی ﻋﻤﻠﯿ ﺎﺗﯽ ﺑ ﺎ واﺳ ﻄﮭﺎی‬
‫ﮔﺮاﻓﯿﮑ ﯽ ﻧﺎﺳ ﺎزﮔﺎر ﻣﺸ ﮑﻼﺗﯽ را ﻣﻮﺟ ﺐ ﺷ ﺪه اﺳ ﺖ‪ .‬اﻣ ﺮوز ﻣ ﺎ ﻣﯿﺒﺎﯾﺴ ﺖ ﺑ ﺎ در ﻧﻈ ﺮ داﺷ ﺘﻦ ﺗﻤ ﺎﻣﯽ اﯾ ﻦ ﻣ ﻮارد‬
‫ﺑﺮﻧﺎﻣ ﮫ ھ ﺎی ﮐ ﺎرﺑﺮدی را در ﯾ ﮏ ﻣﺤ ﯿﻂ ﺗ ﻮزﯾﻌﯽ ﻣﺸ ﺘﺮی‪-‬ﮐﺎرﮔ ﺬار )‪ (client – server‬آﻣ ﺎده ﮐ ﺎر ﻧﮕ ﮫ دارﯾ ﻢ‪.‬‬
‫ﻇﮭ ﻮر اﯾﻨﺘﺮﻧ ﺖ‪ ،‬ﺷ ﺒﮑﮫ ارﺗﺒ ﺎط ﺟﮭ ﺎﻧﯽ) وب (‪ ،‬و ﺗﺠ ﺎرت اﻟﮑﺘﺮوﻧﯿ ﮏ ﻣﻘﺪﻣ ﮫ ای اﺳ ﺖ ﺑ ﺮ ﭘﯿﭽﯿ ﺪﮔﯽ اﺑﻌ ﺎد ﺟﺪﯾ ﺪ در‬
‫روﻧ ﺪ ﺗﻮﺳ ﻌﮫ‪ .‬ﺑ ﮫ ﻧﻈ ﺮ ﻧﻤﯿﺮﺳ ﺪ اﺑﺰارھ ﺎی ﻣ ﻮرد اﺳ ﺘﻔﺎده در ﺗﻮﺳ ﻌﮫ ﺑﺮﻧﺎﻣ ﮫ ھ ﺎی ﮐ ﺎﺑﺮدی ﮐﻤ ﮏ زﯾ ﺎدی ﺑ ﮫ ﻣ ﺎ ﺑﻨﻤﺎﯾﻨ ﺪ‪.‬‬
‫ﮐﻤﺎﮐ ﺎن ﻣﺸ ﮑﻼت ﻗ ﺪﯾﻤﯽ ﺑ ﺮ ﺳ ﺮ راه ﻣ ﺎ ﻣﯿﺒﺎﺷ ﻨﺪ‪ ،‬ﺳ ﺒﮏ ﺟﺪﯾ ﺪ ﺗﮑﻨﯿﮑﮭ ﺎی ﺷ ﯽ ﮔ ﺮا ﻣﺸ ﮑﻼت ﺟﺪﯾ ﺪی را ﺧﻠ ﻖ ﻧﻤ ﻮده‬
‫اﺳﺖ ﺑﺪون اﯾﻨﮑﮫ ﻣﺸﮑﻼت ﻗﺪﯾﻤﯽ را از ﺳﺮ راه ﺑﺮدارد‪ .‬اﻣﺎ ﺑﮫ اﻋﺘﻘﺎد ﺑﺴﯿﺎری اﯾﻦ ﺷﯿﻮه ﮐﺎرﺳﺎز ﺗﺮ اﺳﺖ‪.‬‬

‫ﭘﻼت ﻓﺮم زﺑﺎن ﺑﺮﻧﺎﻣﮫ ﺳﺎزی ﺟﺎوا از ﺟﺎﻧﺐ ‪sun Microsystems‬‬

‫زﺑﺎن ﺑﺮﻧﺎﻣﮫ ﻧﻮﯾﺴﯽ اﺳﺖ ﮐﺎﻣﻼ ﺷﯽ ﮔﺮا‬ ‫‪-1‬‬


‫ﺳ ﯿﮑﻞ ﺗﻮﺳ ﻌﮫ ﺳ ﺮﯾﻌﺘﺮ اﺳ ﺖ زﯾ ﺮا ﺗﮑﻨﻮﻟ ﻮژی ﺟ ﺎوا ﻣﺒﺘﻨ ﯽ ﺑ ﺮ ﺗﻘﺴ ﯿﺮ ﻣﯿﺒﺎﺷ ﺪ – ﮐﺎﻣﭙﺎﯾ ﻞ‪ ،‬ﻟﯿﻨ ﮏ‪ ،‬ﺑﺎرﮔ ﺬاری‪،‬‬ ‫‪-2‬‬
‫آزﻣﺎﯾﺶ‪ ،‬دﯾﺒﺎگ دﯾﮕﺮ ﻣﻨﺴﻮخ ﺷﺪه اﺳﺖ‪ .‬ﺣﺎل ﻣﯿﺒﺎﯾﺴﺖ ﻓﻘﻂ ﮐﺎﻣﭙﺎﯾﻞ و ﺳﭙﺲ اﺟﺮا ﻧﻤﺎﯾﯿﻢ‪.‬‬
‫ﺑﺮﻧﺎﻣ ﮫ ھ ﺎی ﮐ ﺎرﺑﺮدی ﺑ ﺪون ھ ﯿﭻ ﮔﻮﻧ ﮫ ﺗﻘﯿﯿ ﺮی ﺑ ﺮ روی ﺳ ﺨﺖ اﻓﺰارھ ﺎ‪ ،‬ﺳﯿﺴ ﺘﻤﮭﺎی ﻋﺎﻣ ﻞ و ﭘﻼﺗﻔﺮﻣﮭ ﺎی‬ ‫‪-3‬‬
‫ﻣﺨﺘﻠﻒ اﺟﺮا ﻣﯿﺸﻮﻧﺪ‪.‬‬
‫ﺑﺮﻧﺎﻣ ﮫ ھ ﺎی ﮐ ﺎرﺑﺮدی دارای اﻧﺴ ﺠﺎم و ﻗ ﺪرت ﺑﯿﺸ ﺘﺮی ﻣﯿﺒﺎﺷ ﻨﺪ‪ ،‬زﯾ ﺮا ﻣﺤ ﯿﻂ ﺟ ﺎوا در زﻣ ﺎن اﺟ ﺮ ﺣﺎﻓﻈ ﮫ‬ ‫‪-4‬‬
‫را ﻣﺪﯾﺮﯾﺖ ﻣﯿﻨﻤﺎﯾﺪ‪.‬‬
‫ﮐﺎرﺑﺮدھ ﺎی ﮔﺮاﻓﯿﮑ ﯽ ﻣﺤ ﺎوره ای داری ﻋﻤﻠﮑ ﺮد ﺑ ﺎﻻﯾﯽ ھﺴ ﺘﻨﺪ‪ ،‬زﯾ ﺮا ﭘﻼﺗﻔ ﺮم زﻣ ﺎن اﺟ ﺮا و زﺑ ﺎن ﺑﺮﻧﺎﻣ ﮫ‬ ‫‪-5‬‬
‫ﻧﻮﯾﺴ ﯽ ﺟ ﺎوا ﺗﻮﺳ ﻂ ﻓﺮاﯾﻨ ﺪھﺎی ﭼﻨ ﺪ رﯾﺴ ﻤﺎﻧﯽ )‪ (multithreading‬ھﻤﺰﻣ ﺎﻧﯽ ﭼﻨ ﺪﯾﻦ رﯾﺴ ﻤﺎن در داﺧ ﻞ‬
‫ﯾﮏ ﻓﺮاﯾﻨﺪ را ﭘﺸﺘﯿﺒﺎﻧﯽ ﻣﯿﮑﻨﺪ‬
‫ﺑﺮﻧﺎﻣ ﮫ ھ ﺎی ﮐ ﺎرﺑﺮدی ﺑ ﮫ ھﻨﮕ ﺎم ﺗﻘﯿﯿ ﺮ ﻣﺤ ﯿﻂ دارای اﻧﻄﺒ ﺎق ﭘﺰﯾ ﺮی ﺑ ﺎﻻﯾﯽ ﻣﯿﺒﺎﺷ ﻨﺪ زﯾ ﺮا در ھﺮﻟﺤﻈ ﮫ‬ ‫‪-6‬‬
‫ﻣﺎژوﻟﮭﺎی ﮐﺪ ﺑﮫ ﺻﻮرت دﯾﻨﺎﻣﯿﮑﯽ از ﻃﺮﯾﻖ ﺷﺒﮑﮫ ﻗﺎﺑﻞ ﺑﺎرﮔﺬاری ھﺴﺘﻨﺪ‪.‬‬
‫ﮐ ﺎرﺑﺮان ﻣﯿﺘﻮاﻧﻨ ﺪ ﺑ ﮫ ﺑﺮﻧﺎﻣ ﮫ ھ ﺎ اﻃﻤﯿﻨ ﺎن داﺷ ﺘﮫ ﺑﺎﺷ ﻨﺪ‪ ،‬ﺣﺘ ﯽ اﮔ ﺮ ﮐ ﺪھﺎ را از ﻃﺮﯾ ﻖ اﯾﻨﺘﺮﻧ ﺖ درﯾﺎﻓ ﺖ ﮐ ﺮده‬ ‫‪-7‬‬
‫ﺑﺎﺷ ﻨﺪ زﯾ ﺮا ﻣﺤ ﯿﻂ زﻣ ﺎن اﺟ ﺮای ﺟ ﺎوا ﺑ ﮫ ﺻ ﻮرت ﺗﻮﮐ ﺎر در ﻣﻘﺎﺑ ﻞ وﯾﺮوﺳ ﮭﺎ و ﻋﻮاﻣ ﻞ ﭘ ﯿﺶ ﺑﯿﻨ ﯽ ﻧﺸ ﺪه‬
‫ﻣﻘﺎوﻣﺖ ﻣﯿﮑﻨﺪ‪.‬‬

‫ﺑﮫ ﻃﻮر ﮐﻠﯽ ﭘﻼﺗﻔﺮم ﺑﺮﻧﺎﻣﮫ ﻧﻮﯾﺴﯽ ﺟﺎوا ﻣﺤﯿﻄﯽ ﺳﺎده‪ ،‬ﺷﯽ ﮔﺮا و ﺷﻔﺎف را اراﺋﮫ ﻣﯿﮑﻨﺪ ﮐﮫ ﺑﻮﺳﯿﻠﮫ ﭘﺸﺘﯿﺒﺎﻧﯽ از ﻣﺤﯿﻂ زﻣﺎن‬
‫اﺟﺮا ﺑﺮﻧﺎﻣﮫ ھﺎی ﻗﺎﺑﻞ ﺣﻤﻞ و ﺑﺎ ﻋﻤﻠﮑﺮد ﺑﺎﻻ را ﺑﮫ آﺳﺎﻧﯽ ﻣﯿﺘﻮان اﯾﺠﺎد ﻧﻤﻮد‪.‬‬

‫‪2‬‬
‫آﻏﺎز ﭘﺮوژه زﺑﺎن ﺑﺮﻧﺎﻣﮫ ﺳﺎزی ﺟﺎوا‬
‫زﺑ ﺎن ﺑﺮﻧﺎﻣ ﮫ ﻧﻮﯾﺴ ﯽ ﺟ ﺎوا ﺟﮭ ﺖ روﯾ ﺎروﯾﯽ ﺑ ﺎ ﭼﺎﻟﺸ ﮭﺎی ﺗﻮﺳ ﻌﮫ ﺑﺮﻧﺎﻣ ﮫ ھ ﺎی ﮐ ﺎرﺑﺮدی در زﻣﯿﻨ ﮫ ﻣﺤﯿﻄﮭ ﺎی‬
‫ﺗ ﻮزﯾﻌﯽ ﺷ ﺒﮑﮫ ھ ﺎی ﻋﻈ ﯿﻢ ﻧ ﺎھﻤﮕﻦ )‪ (heterogeneous‬ﻃﺮاﺣ ﯽ ﺷ ﺪه اﺳ ﺖ‪ .‬در ﻣﯿ ﺎن اﯾ ﻦ ﭼﺎﻟﺸ ﮭﺎ اﻣﻨﯿ ﺖ اراﺋ ﮫ ﺷ ﺪه‬
‫ﺗﻮﺳ ﻂ ﺑﺮﻧﺎﻣ ﮫ ﮐ ﺎرﺑﺮدی ﺑ ﺎ ﮐﻤﺘ ﺮﯾﻦ ﻣﯿ ﺰان ﻣﺼ ﺮف ﻣﻨ ﺎﺑﻊ ﺳﯿﺴ ﺘﻢ‪ ،‬ﺗﻮاﻧ ﺎﯾﯽ اﺟ ﺮا ﺑ ﺮ روی ﭘﻼﺗﻔﺮﻣﮭ ﺎی ﻧ ﺮم اﻓ ﺰاری‬
‫و ﺳ ﺨﺖ اﻓ ﺰاری ﻣﺨﺘﻠ ﻒ و ﺗﻮﺳ ﻌﮫ دﯾﻨ ﺎﻣﯿﮑﯽ از درﺟ ﮫ اھﻤﯿ ﺖ ﺑ ﺎﻻﯾﯽ ﺑﺮﺧ ﻮردار اﺳ ﺖ‪ .‬زﺑ ﺎن ﺑﺮﻧﺎﻣ ﮫ ﻧﻮﯾﺴ ﯽ ﺟ ﺎوا‬
‫ﻧﺘﯿﺠ ﮫ ﺑﺨﺸ ﯽ از ﭘ ﺮوژه ﺗﺤﻘﯿﻘ ﺎﺗﯽ ﺗﻮﺳ ﻌﮫ ﻧ ﺮم اﻓ ﺰار ﭘﯿﺸ ﺮﻓﺘﮫ ﺑ ﺮای ﺑ ﺎزه ﻋﻈﯿﻤ ﯽ از ﺷ ﺒﮑﮫ ھ ﺎ و ﺳﯿﺴ ﺘﻤﮭﺎی ﺗﻌﺒﯿ ﮫ‬
‫ﺷ ﺪه ﻣﯿﺒﺎﺷ ﺪ‪ .‬ھ ﺪف ﺗﻮﺳ ﻌﮫ ﯾ ﮏ ﭘﻼﺗﻔ ﺮم ﮐﻮﭼ ﮏ‪ ،‬ﻗﺎﺑ ﻞ اﻋﺘﻤ ﺎد‪ ،‬ﻗﺎﺑ ﻞ ﺣﻤ ﻞ‪ ،‬ﺗ ﻮزﯾﻌﯽ و ﺑﻼدرﻧ ﮓ )‪ (real time‬ﺑ ﻮد‪.‬‬
‫ھﻨﮕﺎﻣﯿﮑ ﮫ ﭘ ﺮوژه ﺷ ﺮوع ﺑ ﮫ ﮐ ﺎر ﻧﻤ ﻮد ‪ c++‬زﺑ ﺎن اﻧﺘﺨ ﺎﺑﯽ ﺑ ﻮد‪ .‬اﻣ ﺎ ﺑ ﺎ ﮔﺬﺷ ﺖ زﻣ ﺎن رﺧ ﺪاد ﻣﺸ ﮑﻼت ﺑ ﺎ ‪c++‬‬
‫اﻓ ﺰاﯾﺶ ﯾﺎﻓ ﺖ و اﯾ ﻦ ﯾﻌﻨ ﯽ اﯾﻨﮑ ﮫ ﻣﺴ ﺎﺋﻞ ﻣﯿﺘﻮاﻧ ﺪ ﺗﻮﺳ ﻂ اﯾﺠ ﺎد ﯾ ﮏ ﭘﻼﺗﻔ ﺮم ﺟﺪﯾ ﺪ ﺑ ﺮای زﺑ ﺎن ﺑﮭﺘ ﺮ ﺷﻨﺎﺳ ﺎﯾﯽ ﺷ ﻮد‪.‬‬
‫ﻃﺮاﺣ ﯽ و ﻣﻌﻤ ﺎری از ﭼﻨ ﺪﯾﻦ زﺑ ﺎن ﻣﺨﺘﻠ ﻒ از ﻗﺒﯿ ﻞ اﯾﻔ ﻞ‪ ،‬ﺳ ﻤﺎﻟﺘﺎک‪ ،‬ﺳ ﯽ ﺷ ﯽ ﮔ ﺮا‪ ،‬و ﺳ ﯿﺪر‪/‬ﻣﯿﺴ ﺎ ﺗﺒﻌﯿ ﺖ ﻣﯿﮑ ﺮد‪.‬‬
‫ﻧﺘﯿﺠ ﮫ اﯾ ﻦ اﻣ ﺮ ﭘﻼﺗﻔ ﺮم زﺑ ﺎﻧﯽ اﺳ ﺖ ﮐ ﮫ ﺛﺎﺑ ﺖ ﺷ ﺪه اﺳ ﺖ در ﺗﻮﺳ ﻌﮫ ﺳ ﯿﺘﻤﮭﺎی ﺗ ﻮزﯾﻌﯽ و اﻣ ﻦ ﺑ ﺮای ﺑﺮﻧﺎﻣ ﮫ ھ ﺎی‬
‫ﮐﺎرﺑﺮدھﺎﯾﯽ در ﻣﺤﯿﻄﮭﺎﯾﯽ از ﺷﺒﮑﮫ ھﺎی ﺗﻌﺒﯿﮫ ﺷﺪه ﺗﺎ وب ﺟﮭﺎﻧﯽ و دﺳﮑﺘﺎپ اﯾﺪه آل اﺳﺖ‪.‬‬

‫اھﺪاف ﻃﺮاﺣﯽ زﺑﺎن ﺑﺮﻧﺎﻣﮫ ﺳﺎزی ﺟﺎوا‬


‫ﻧﯿ ﺎز ﺑ ﮫ ﻃﺮاﺣ ﯽ زﺑ ﺎن ﺟ ﺎوا از ﻣﺎھﯿ ﺖ ﻣﺤﯿﻄﮭ ﺎی ﻣﺤﺎﺳ ﺒﺎﺗﯽ ﮐ ﮫ ﻧ ﺮم اﻓ ﺰار در آن ﺗﻮﺳ ﻌﮫ ﻣﯿﺎﺑ ﺪ ﺳﺮﭼﺸ ﻤﮫ ﮔﺮﻓﺘ ﮫ‬
‫اﺳ ﺖ‪ .‬اﻓ ﺰاﯾﺶ ﭼﺸ ﻤﮕﯿﺮ اﯾﻨﺘﺮﻧ ﺖ و وب ﺟﮭ ﺎﻧﯽ ﻣ ﺎ را ﺑ ﮫ ﻧﮕﺮﺷ ﯽ ﮐ ﺎﻣﻼ ﻧ ﻮ در ﻣﻘﻮﻟ ﮫ ﺗﻮﺳ ﻌﮫ و ﺗﻮزﯾ ﻊ ﻧ ﺮم اﻓ ﺰار‬
‫ﺳ ﻮق ﻣﯿﺪھ ﺪ‪ .‬ﺑ ﺮای زﻧ ﺪﮔﯽ در دﻧﯿ ﺎی ﺗﺠ ﺎرت اﻟﮑﺘﺮوﻧﯿ ﮏ‪ ،‬ﺗﮑﻨﻮﻟ ﻮژی ﺟ ﺎوا ﻣﯿﺒﺎﯾﺴ ﺖ ﻗ ﺎدر ﺑ ﮫ ﺗﻮﺳ ﻌﮫ ﻋﻤﻠﮑ ﺮد ﺑ ﺎﻻ‪،‬‬
‫اﻣﻨﯿ ﺖ‪ ،‬و ﺑﺮﻧﺎﻣ ﮫ ھ ﺎی ﮐ ﺎرﺑﺮدی ﻧﯿﺮوﻣﻨ ﺪی ﺑ ﺮای ﭘﻼﺗﻔ ﺮم ھ ﺎی ﻣﺨﺘﻠ ﻒ در ﺷ ﺒﮑﮫ ھ ﺎی ﺗ ﻮزﯾﻌﯽ ﺑ ﺎ ﻣﻌﻤﺎرﯾﮭ ﺎی‬
‫ﭼﻨﺪﮔﺎﻧ ﮫ ﺑﺎﺷ ﺪ‪ .‬ﻋﻤﻠﯿ ﺎت ﺑ ﺮ روی ﭘﻼﺗﻔﺮﻣﮭ ﺎی ﭼﻨﺪﮔﺎﻧ ﮫ در ﺷ ﺒﮑﮫ ھ ﺎﯾﯽ ﺑ ﺎ ﻣﻌﻤ ﺎری ھ ﺎی ﻣﺨﺘﻠ ﻒ ﺷ ﯿﻮھﺎی ﺳ ﻨﺘﯽ در‬
‫ﺗﻮزﯾ ﻊ‪ ،‬اﻧﺘﺸ ﺎر‪ ،‬ﺑ ﮫ رو ز رﺳ ﺎﻧﯽ و ﻋ ﻮاﻣﻠﯽ از اﯾ ﻦ ﻗﺒﯿ ﻞ را ﻣﻨﺴ ﻮخ ﺳ ﺎﺧﺘﮫ اﺳ ﺖ‪ .‬ﺑ ﺮای زﻧ ﺪه ﻣﺎﻧ ﺪن در اﯾ ﻦ ﺟﻨﮕ ﻞ‪،‬‬
‫زﺑ ﺎن ﺑﺮﻧﺎﻣ ﮫ ﺳ ﺎزی ﺟ ﺎوا ﺑﺎﯾ ﺪ ﻣ ﺎھﯿﺘﯽ ﻃﺒﯿﻌ ﯽ داﺷ ﺘﮫ ﺑﺎﺷ ﺪ‪ ،‬ﻗﺎﺑ ﻞ ﺣﻤ ﻞ و ﺑ ﮫ ﺻ ﻮرت دﯾﻨ ﺎﻣﯿﮑﯽ اﻧﻄﺒ ﺎق ﭘ ﺬﯾﺮ ﺑﺎﺷ ﺪ‪.‬‬
‫ﺳﯿﺴ ﺘﻤﯽ ﮐ ﮫ ﺑ ﺮای ﭘﺎﺳ ﺨﮕﻮﯾﯽ ﺑ ﮫ اﯾ ﻦ ﻧﯿﺎزھ ﺎ ﭘﺪﯾ ﺪ آﻣ ﺪه اﺳ ﺖ ﺳ ﺎده اﺳ ﺖ‪ ،‬ﺑﻨ ﺎﺑﺮاﯾﻦ ﺑ ﮫ آﺳ ﺎﻧﯽ ﺗﻮﺳ ﻂ ﺗﻮﺳ ﻌﮫ دھﻨ ﺪﮔﺎن‬
‫ﺑﺮﻧﺎﻣ ﮫ ﻧﻮﯾﺴ ﯽ ﻣﯿﺸ ﻮد; ﻣ ﺎﻧﻮس و آﺷ ﻨﺎ اﺳ ﺖ‪ ،‬ﺑﻨ ﺎﺑﺮاﯾﻦ ﺗﻮﺳ ﻌﮫ دھﻨ ﺪﮔﺎن ﺑ ﮫ آﺳ ﺎﻧﯽ زﺑ ﺎن ﺑﺮﻧﺎﻣ ﮫ ﻧﻮﯾﺴ ﯽ ﺟ ﺎوا را ﻓ ﺮا‬
‫ﻣﯿﮕﯿﺮﻧ ﺪ; ﺷ ﯽ ﮔ ﺮا اﺳ ﺖ‪ ،‬ﭘ ﺲ از ﻣﺰاﯾ ﺎی ﻣﺘ ﺪوﻟﻮژی ھ ﺎی ﺗﻮﺳ ﻌﮫ ﻧ ﺮم اﻓ ﺰار ﻣ ﺪرن ﺑﺮﺧ ﻮردار اﺳ ﺖ و ﻣﻨﺎﺳ ﺐ‬
‫ﮐﺎرﺑﺮدھ ﺎی ﺗﻮزﯾ ﻊ ﺷ ﺪه ﮐﺎرﮔ ﺬار‪/‬ﻣﺸ ﺘﺮی ﻣﯿﺒﺎﺷ ﺪ; ﭼﻨ ﺪ رﯾﺴ ﻤﺎﻧﯽ )‪ (multithreaded‬اﺳ ﺖ‪ ،‬دارای ﻋﻤﻠﮑ ﺮد ﺑ ﺎﻻ‬
‫در ﮐﺎرﺑﺮدھ ﺎﯾﯽ اﺳ ﺖ ﮐ ﮫ ﻧﯿﺎزﻣﻨ ﺪ اﻧﺠ ﺎم ﭼﻨ ﺪﯾﻦ ﻓﻌﺎﻟﯿ ﺖ ھﻤﺰﻣ ﺎن ﻣﯿﺒﺎﺷ ﻨﺪ – از ﻗﺒﯿ ﻞ ﭼﻨ ﺪ رﺳ ﺎﻧﮫ ھ ﺎ; و ﻣﻔﺴ ﺮی اﺳ ﺖ‬
‫ﮐﮫ ﺑﯿﺸﺘﺮﯾﻦ ﻗﺎﺑﻠﯿﺖ اﻧﺘﻘﺎل و اﻣﮑﺎﻧﺎت ﭘﻮﯾﺎ را ﻓﺮاھﻢ ﻣﯽ آورد‪.‬‬

‫زﺑ ﺎﻧﯽ ﺳ ﺎده ﮐ ﮫ ﺑ ﺪون ﮔﺴ ﺘﺮش ﺗﻤﺮﯾﻨ ﺎت ﺑﺮﻧﺎﻣ ﮫ ﻧﻮﯾﺴ ﯽ ھﻤﺎھﻨ ﮓ ﺑ ﺎ ﺷ ﯿﻮه ھ ﺎی ﻧ ﻮﯾﻦ ﻧ ﺮم اﻓ ﺰاری ﻗﺎﺑ ﻞ ﺑﺮﻧﺎﻣ ﮫ‬
‫رﯾ ﺰی اﺳ ﺖ از وﯾﮋﮔﯿﮭ ﺎی اﺻ ﻠﯽ ﺟ ﺎوا ﻣﯿﺒﺎﺷ ﺪ‪ .‬ﻣﻔ ﺎھﯿﻢ اﺳﺎﺳ ﯽ ﺗﮑﻨﻮﻟ ﻮژی ﺟ ﺎوا ﺑ ﮫ ﺳ ﺮﻋﺖ ﻗﺎﺑ ﻞ ﻓﮭ ﻢ اﺳ ﺖ‪ ،‬ﺑﺮﻧﺎﻣ ﮫ‬
‫ﻧﻮﯾﺴ ﺎن در ﺳ ﻄﻮح ﺧﯿﻠ ﯽ ﻣﭙﺘ ﺪی ﻗ ﺎدر ﺑ ﮫ ﺧﻼﻗﯿ ﺖ ﻣﯿﺒﺎﺷ ﻨﺪ‪ .‬زﺑ ﺎن ﺟ ﺎوا از ﻟﺤﻈ ﮫ ﭘﯿ ﺪاﯾﺶ ﻣﺒﺘﻨ ﯽ ﺑ ﺮ ﺷ ﯽ ﻃﺮاﺣ ﯽ ﺷ ﺪ‪.‬‬
‫ﺗﮑﻨﻮﻟ ﻮژی اﺷ ﯿﺎء ﺳ ﺮاﻧﺠﺎم ﭘ ﺲ از ﻃ ﯽ ﮐ ﺮدن ﯾ ﮏ ﺑ ﺎزه زﻣ ﺎﻧﯽ ﺳ ﯽ ﺳ ﺎﻟﮫ ﻣﺴ ﯿﺮ اﺻ ﻠﯽ ﺧ ﻮد را ﺑﺮﻧﺎﻣ ﮫ ﺳ ﺎزی را‬
‫ﭘﯿ ﺪا ﻧﻤ ﻮد‪ .‬ﻧﯿ ﺎز ﺑ ﮫ ﺳﯿﺴ ﺘﻤﮭﺎی ﺗ ﻮزﯾﻌﯽ ﻣﺒﺘﻨ ﯽ ﺑ ﺮ ﮐ ﺎرﮔﺰار‪/‬ﻣﺸ ﺘﺮی ﻣﻘ ﺎرن ﺑ ﺎ ﺑﺴ ﺘﮫ ﺑﻨ ﺪی ﭘﺎراداﯾﻤﺴ ﮭﺎی ارﺳ ﺎل ﭘﯿ ﺎم‬
‫در ﻧ ﺮم اﻓ ﺰار ﻣﺒﺘﻨ ﯽ ﺑ ﺮ ﺷ ﯽ ﻣﯿﺒﺎﺷ ﺪ‪ .‬ﺑ ﺮای ﻓﻌﺎﻟﯿ ﺖ در داﺧ ﻞ ﻣﺤﯿﻄﮭ ﺎی ﻣﺒﺘﻨ ﯽ ﺑ ﺮ ﺷ ﺒﮑﮫ ﮐ ﮫ ﺑ ﮫ ﻃ ﻮر ﺻ ﻌﻮدی در‬
‫ﺣ ﺎل ﭘﯿﭽﯿ ﺪه ﺷ ﺪن ﻣﯿﺒﺎﺷ ﺪ‪ ،‬ﺳﯿﺴ ﺘﻤﮭﺎی ﺑﺮﻧﺎﻣ ﮫ ﻧﻮﯾﺴ ﯽ ﻣﯿﺒﺎﯾﺴ ﺖ ﺑ ﺎ ﻣﻔ ﺎھﯿﻢ ﺷ ﯽ ﮔ ﺮا ﻣﻨﻄﺒ ﻖ ﺑﺎﺷ ﻨﺪ‪ .‬ﺗﮑﻨﻮﻟ ﻮژی ﺟ ﺎوا‬
‫ﯾﮏ ﭘﻼﺗﻔﺮم ﺗﻮﺳﻌﮫ ﺷﻔﺎف و ﮐﺎراﻣﺪ ﻣﺒﺘﻨﯽ ﺑﺮ ﺷﯽ را اراﺋﮫ ﻣﯿﮑﻨﺪ‪.‬‬

‫‪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‬‬
‫}‬
‫}‬

‫اﯾ ﻦ ﻣﺜ ﺎل ﮐﻼﺳ ﯽ ﺑ ﺎ ﻧ ﺎم ‪ HelloWorld‬را اﻋ ﻼن ﻣﯿﮑﻨ ﺪ‪ .‬در داﺧ ﻞ ﮐ ﻼس ﯾ ﮏ ﻣﺘ ﺪ ﺑ ﺎ ﻧ ﺎم )(‪ main‬اﻋ ﻼن‬


‫ﺷ ﺪه اﺳ ﺖ ﮐ ﮫ ﺗﻨﮭ ﺎ ﻣﻨﺠ ﺮ ﺑ ﮫ ﭼ ﺎپ !‪ HelloWorld‬در ﺧﺮوﺟ ﯽ ﻣﯿﺸ ﻮد‪ .‬دﺳ ﺘﻮری ﮐ ﮫ !‪ HelloWorld‬را ﭼ ﺎپ‬
‫ﻣﯿﮑﻨ ﺪ ﺗﻮﺳ ﻂ اﺣﻀ ﺎر ﻣﺘ ﺪ ‪ println‬از ﺷ ﯽ ‪ out‬اﺟ ﺮا ﻣﯿﺸ ﻮد‪ .‬ﺷ ﯽ ‪ out‬ﻣﺘﻐﯿ ﺮ ﮐ ﻼس )‪ (class variable‬اﺳ ﺖ ﮐ ﮫ‬
‫در ﮐﻼس ﺳﯿﺴﺘﻢ ﻗﺮار دارد و ﻋﻤﻼﯾﺖ ﺧﺮوﺟﯽ را ﺑﺮ روی ﻓﺎﯾﻠﮭﺎ اﻧﺠﺎم ﻣﯿﺪھﺪ‪.‬‬

‫‪6‬‬
‫وﯾﮋﮔﯿﮭﺎی اﺻﻠﯽ زﺑﺎن ﺑﺮﻧﺎﻣﮫ ﺳﺎزی ﺟﺎوا‬
‫ﺑ ﮫ ﻏﯿ ﺮ از اﻧ ﻮاع داده اوﻟﯿ ﮫ‪ ،‬ھﻤ ﮫ ﭼﯿ ﺰ در زﺑ ﺎن ﺟ ﺎوا ﯾ ﮏ ﺷ ﯽ ﻣﺤﺴ ﻮب ﻣﯿﺸ ﻮد‪ .‬ﺣﺘ ﯽ در ﺻ ﻮرت ﻧﯿ ﺎز اﻧ ﻮاع داده‬
‫اوﻟﯿ ﮫ ﻧﯿ ﺰ ﻣﯿﺘﻮاﻧﻨ ﺪ در ﻗﺎﻟ ﺐ ﺷ ﯽ ﮐﭙﺴ ﻮﻟﮫ )‪ (encapsulate‬ﺷ ﻮﻧﺪ‪ .‬اﻧ ﻮاع داده ھ ﺎی اﺻ ﻠﯽ در زﺑ ﺎن ﺟ ﺎوا ﺷ ﺒﺎھﺖ‬
‫ﺑﺴ ﯿﺎر زﯾ ﺎدی ﺑ ﺎ اﻧ ﻮاع داده ھ ﺎی اﺳﺎﺳ ﯽ زﺑ ﺎن ‪ c++‬دارد‪ .‬اﻧ ﻮاع داده اﭘﺘ ﺪاﯾﯽ در زﺑ ﺎن ﺟ ﺎوا ﻋﺒﺎرﺗﻨ ﺪ از‪ :‬ﻧ ﻮع‬
‫ﻋﺪدی‪ ،‬ﮐﺎراﮐﺘﺮی و ﺑﻮﻟﯿﻦ‪.‬‬

‫ﻧﻮع داده ﻋﺪدی‬


‫‪ 8) byte‬ﺑﯿ ﺖ(‪ 16) short ،‬ﺑﯿ ﺖ(‪ 32) int ،‬ﺑﯿ ﺖ( و ‪ 64) long‬ﺑﯿ ﺖ( اﻧ ﻮاع داده ﻋ ﺪدی ﺻ ﺤﯿﺢ در ﺟ ﺎوا‬
‫ﻣﯿﺒﺎﺷ ﻨﺪ‪ 8 byte .‬ﺑﯿﺘ ﯽ ﺟ ﺎﯾﮕﺰﯾﻦ ‪ char‬زﺑ ﺎن ‪ c++‬ﺷ ﺪه اﺳ ﺖ زﯾ ﺮا ﺟ ﺎوا ﻧ ﻮع ‪ char‬را ﺑ ﮫ ﮔﻮﻧ ﮫ ای دﯾﮕ ﺮ ﺗﻌﺒﯿ ﺮ‬
‫ﻣﯿﮑﻨ ﺪ‪ .‬ﻣﺸﺨﺼ ﮫ ‪ unsigned‬ﺑ ﺮای ﻧ ﻮع داده در ﺟ ﺎوا وﺟ ﻮد ﻧ ﺪارد‪ .‬اﻧ ﻮاع داده ﻋ ﺪدی ﺣﻘﯿﻘ ﯽ ﻋﺒﺎرﺗﻨ ﺪ از‪float :‬‬
‫)‪ 32‬ﺑﯿﺘ ﯽ(‪64) double ،‬ﺑﯿﺘ ﯽ(‪ .‬اﻧ ﻮاع ﻋ ﺪدی ﺣﻘﯿﻘ ﯽ و ﻋﻤﻠﯿ ﺎت ﺣﺴ ﺎﺑﯽ آﻧﮭ ﺎ ﺗﻮﺳ ﻂ ‪ IEEE‬ﺗﻌﺮﯾ ﻒ ﺷ ﺪه اﺳ ﺖ‪.‬‬
‫ﻣﻘ ﺪار ﺣﻘﯿﻘ ﯽ )ﻣﻤﯿ ﺰ ﺷ ﻨﺎور( ﺑ ﮫ ﻣﺎﻧﻨ ﺪ ‪ 23.79‬ﺑ ﮫ ﺻ ﻮرت ﭘﯿﺸ ﻔﺮض ‪ double‬در ﻧﻈ ﺮ ﮔﺮﻓﺘ ﮫ ﻣﯿﺸ ﻮد ﻣﮕ ﺮ اﯾﻨﮑ ﮫ‬
‫ﺑﮫ ﻃﻮر ﺻﺮﯾﺢ آن را ﺑﮫ ﻋﻨﻮان ‪ float‬ﻣﺸﺨﺺ ﻧﻤﺎﯾﯿﺪ‪.‬‬

‫ﻧﻮع داده ﮐﺎراﮐﺘﺮی‬


‫داده ﮐ ﺎراﮐﺘﺮی در ﺟ ﺎوا ﺑ ﮫ ﺷ ﯿﻮه ﺳ ﻨﺘﯽ ‪ c‬ﻋﻤ ﻞ ﻧﻤﯿﮑﻨ ﺪ‪ .‬ﻧ ﻮع داده ﮐ ﺎراﮐﺘﺮی ﺟ ﺎوا ﺑ ﮫ ﺻ ﻮرت ﯾﻮﻧﯿﮑ ﺪ ‪ 16‬ﺑﯿﺘ ﯽ‬
‫ﺗﻌﺮﯾ ﻒ ﺷ ﺪه اﺳ ﺖ‪ .‬ﮐﺎراﮐﺘﺮھ ﺎی ﯾﻮﻧﯿﮑ ﺪ ﻣﻘ ﺎدﯾﺮی ﺷ ﺎﻧﺰده ﺑﯿﺘ ﯽ و ﺑ ﺪون ﻋﻼﻣ ﺖ ھﺴ ﺘﻨﺪ ﮐ ﮫ ﮐ ﺪ ﮐﺎرﮐﺘﺮھ ﺎﯾﯽ از ‪ 0‬ﺗ ﺎ‬
‫‪ 65،535‬را ﻣﺸﺨﺺ ﻣﯿﺴﺎزﻧﺪ‪.‬‬

‫'‪char myChar = `Q‬‬

‫اﯾﻦ دﺳﺘﻮر ﯾﮏ ﻣﺘﻐﯿﺮ ﯾﻮﻧﯿﮑﺪ ‪ 16‬ﺑﯿﺘﯽ ﺗﻌﺮﯾﻒ ﻣﯿﮑﻨﺪ ﺗﺎ ﻣﻘﺪار ﯾﻮﻧﯿﮑﺪ ﮐﺎراﮐﺘﺮ ‪ Q‬را در ﺧﻮد ﺟﺎی دھﺪ‪.‬‬

‫ﻧﻮع داده ﺑﻮﻟﯿﻦ‬


‫ﯾ ﮏ ﻣﺘﻐﯿ ﺮ ﺑ ﻮﻟﯽ در زﺑ ﺎن ﺟ ﺎوا ﯾﮑ ﯽ از ﻣﻘ ﺎدﯾﺮ ‪ true‬ﯾ ﺎ ‪ false‬را ﻣﯿﭙﺰﯾ ﺮد‪ .‬ﺑ ﺮ ﺧ ﻼف زﺑ ﺎن ‪ c‬در ﺟ ﺎوا ﻧ ﻮع‬
‫ﺑﻮﻟﯽ ﺑﮫ ﻧﻮع ﻋﺪدی ﺗﺒﺪﯾﻞ ﻧﻤﯿﺸﻮد‪.‬‬

‫ﻋﻤﻠﮕﺮھﺎی ﻣﺤﺎﺳﺒﺎﺗﯽ و راﺑﻄﮫ ای‬


‫ﺗﻤ ﺎم ﻋﻤﻠﮕﺮھ ﺎی ﺷ ﻨﺎﺧﺘﮫ ﺷ ﺪه زﺑ ﺎن ‪ c++‬در ﺟ ﺎوا در دﺳ ﺘﺮس ﻣﯿﺒﺎﺷ ﻨﺪ‪ .‬ﺟ ﺎوا ھﻤﭽﻨ ﯿﻦ ﺟﮭ ﺖ اﻟﺤ ﺎق دو رﺷ ﺘﮫ‬
‫ﻋﻤﻠﮕﺮ ‪ +‬را ﺑﮑﺎر ﻣﯿﺒﺮد‪.‬‬

‫آراﯾﮫ ھﺎ‬
‫ﺑ ﺮﺧﻼف ‪ c‬و ‪ ،c++‬آراﯾ ﮫ ھ ﺎی زﺑ ﺎن ﺑﺮﻧﺎﻣ ﮫ ﻧﻮﯾﺴ ﯽ ﺟ ﺎوا ﮐﻼﺳ ﯽ از اﺷ ﯿﺎء ﺑﺸ ﻤﺎر ﻣﯿﺮوﻧ ﺪ‪ .‬ﯾ ﮏ آراﯾ ﮫ در ﺟ ﺎوا‬
‫ﯾ ﮏ ﺷ ﯽ واﻗﻌ ﯽ اﺳ ﺖ ھﻤ ﺮاه ﺑ ﺎ ﻧﻤ ﺎﯾﺶ زﻣ ﺎن اﺟ ﺮا‪ .‬ﻣﯿﺘ ﻮان آراﯾ ﮫ ھ ﺎ را از ھ ﺮ ﻧ ﻮﻋﯽ را اﻋ ﻼن ﯾ ﺎ ﺗﺨﺼ ﯿﺺ داد و‬
‫ھﻤﭽﻨﯿﻦ ﺑﺮای اﯾﺠﺎد آراﯾﮫ ھﺎی ﭼﻨﺪ ﺑﻌﺪی ﻣﯿﺘﻮان آرﯾﮫ ھﺎﯾﯽ از آراﯾﮫ ھﺎ را ﺗﺨﺼﯿﺺ داد‪.‬‬

‫‪7‬‬
‫;][‪Point myPoints‬‬

‫دﺳ ﺘﻮر ﻓ ﻮق ‪ mypoints‬را ﺑ ﮫ ﻋﻨ ﻮان آراﯾ ﮫ ای ﺑ ﺪون ﻣﻘ ﺪاردھﯽ اوﻟﯿ ﮫ از ﻧ ﻮع ‪) points‬ﮐﻼﺳ ﯽ ﮐ ﮫ ﻗ ﺒﻼ اﻋ ﻼن‬
‫ﺷ ﺪه اﺳ ﺖ( اﻋ ﻼن ﻣﯿﮑﻨ ﺪ‪ .‬در اﯾ ﻦ ﻟﺤﻈ ﮫ ﺗﻨﮭ ﺎ ﻓﻀ ﺎﯾﯽ ﮐ ﮫ ﺑ ﮫ ‪ mypoints‬اﺧﺘﺼ ﺎص ﯾﺎﻓﺘ ﮫ اﺳ ﺖ ﯾ ﮏ ﻧﮕﮭﺪارﻧ ﺪه‬
‫ارﺟﺎع ﻣﯿﺒﺎﺷﺪ )‪ .(reference handle‬ﺑﻨﺎﺑﺮاﯾﻦ در اداﻣﮫ ﻣﯿﺒﺎﯾﺴﺖ ﻣﻘﺪار ﻓﻀﺎی ﻣﻮرد ﻧﯿﺎز را اﺧﺘﺼﺎص داد‪:‬‬

‫;]‪myPoints = new Point[10‬‬

‫اﯾﻦ دﺳﺘﻮر آراﯾﮫ ای از ده ارﺟﺎع را ﺑﮫ ‪ 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‬‬

‫اﯾﻦ دﺳﺘﻮر ﻣﻘﺪار ‪ 10‬را ﺑﮫ ﻣﺘﻐﯿﺮ ‪ howmany‬ﺗﺨﺼﯿﺺ ﻣﯿﺪھﺪ‪.‬‬

‫رﺷﺘﮫ ھﺎ‬
‫رﺷ ﺘﮫ ھ ﺎ اﺷ ﯿﺎء زﺑ ﺎن ﺟ ﺎوا ﻣﺤﺴ ﻮب ﻣﯿﺸ ﻮﻧﺪ و ﺑ ﮫ ﻣﺎﻧﻨ ﺪ زﺑ ﺎن ‪ c‬رﺷ ﺘﮫ آراﯾ ﮫ ای از ﮐ ﺎراﮐﺘﺮ ﻣﺤﺴ ﻮب ﻧﻤﯿﺸ ﻮد‪ .‬در‬
‫واﻗ ﻊ دو ﻧ ﻮع اﺷ ﯿﺎء رﺷ ﺘﮫ ای ﻣﻮﺟ ﻮد ﻣﯿﺒﺎﺷ ﺪ‪ :‬ﮐ ﻼس ‪) string‬ﺑ ﺮای اﺷ ﯿﺎء رﺷ ﺘﮫ ای ﻓﻘ ﻂ ﺧﻮاﻧ ﺪﻧﯽ( و ﮐ ﻼس‬
‫‪) stringBuffer‬ﺑ ﺮای اﺷ ﯿﺎ رﺷ ﺘﮫ ای ﻗﺎﺑ ﻞ اﺻ ﻼح(‪ .‬ﮔﺮﭼ ﮫ رﺷ ﺘﮫ ھ ﺎ اﺷ ﯿﺎء زﺑ ﺎن ﺟ ﺎوا ﺑ ﮫ ﺣﺴ ﺎب ﻣ ﯽ آﯾﻨ ﺪ‪،‬‬
‫ﮐﺎﻣﭙ ﺎﯾﻠﺮ ﺟ ﺎوا ﻧﺤ ﻮ ﺳ ﻨﺘﯽ زﺑ ﺎن ‪ c‬را ﺑ ﺮای راﺣﺘ ﯽ ﺑﺮﻧﺎﻣ ﮫ ﻧﻮﯾﺴ ﺎن ‪ c‬دﻧﺒ ﺎل ﻣﯿﮑﻨ ﺪ‪ .‬ﺑ ﮫ ﻋﻨ ﻮان ﻣﺜ ﺎل‪ ،‬ﮐﺎﻣﭙ ﺎﯾﻠﺮ ﺟ ﺎوا‬
‫ﻣﯿﺪاﻧﺪ ﮐﮫ رﺷﺘﮫ ای از ﮐﺎراﮐﺘﺮھﺎ ﮐﮫ در داﺧﻞ ﮐﻮﺗﯿﺸﻦ ھﺎی دوﮔﺎﻧﮫ ﻣﺤﺼﻮر ﺷﺪه اﺳﺖ ﯾﮏ ﺷﯽ رﺷﺘﮫ ای اﺳﺖ‪.‬‬

‫;"!‪String hello = "Hello world‬‬

‫اﯾ ﻦ دﺳ ﺘﻮر ﯾ ﮏ ﺷ ﯽ از ﮐ ﻼس ‪ String‬را اﻋ ﻼن ﻣﯿﮑﻨ ﺪ و آن را ﺑﻮﺳ ﯿﻠﮫ ﯾ ﮏ رﺷ ﺘﮫ ﮐ ﺎراﮐﺘﺮی ﺷ ﺎﻣﻞ ﯾﻮﻧﯿﮑ ﺪ‬


‫ﮐﺎراﮐﺘﺮھ ﺎی !‪ Hello world‬ﻣﻘ ﺪاردھﯽ اوﻟﯿ ﮫ ﻣﯿﻨﻤﺎﯾ ﺪ‪ .‬ﺗﮑﻨﻮﻟ ﻮژی ﺟ ﺎوا ﻣﻌﻨ ﺎی ﻋﻤﻠﮕ ﺮ ‪ +‬را ﮔﺴ ﺘﺮش داد ﺗ ﺎ‬
‫اﻟﺤﺎق رﺷﺘﮫ ھﺎ را اﻧﺠﺎم دھﺪ‪.‬‬

‫‪8‬‬
‫;)"‪System.out.println("There are " + num + " characters in the file.‬‬

‫اﯾ ﻦ ﻗﻄﻌ ﮫ ﮐ ﺪ‪ ،‬رﺷ ﺘﮫ " ‪ "There are‬را ﺑ ﺎ ﻧﺘﯿﺠ ﮫ ﺗﺒ ﺪﯾﻞ ﻣﻘ ﺪار ﻋ ﺪدی ‪ num‬ﺑ ﮫ رﺷ ﺘﮫ اﻟﺤ ﺎق ﻣﯿﮑﻨ ﺪ و ﺳ ﭙﺲ ﺑ ﺎ‬
‫رﺷ ﺘﮫ "‪ " characters in the file.‬اﻟﺤ ﺎق ﻣﯿﮑﻨ ﺪ‪ .‬درﻧﮭﺎﯾ ﺖ ﻧﺘﯿﺠ ﮫ اﯾ ﻦ اﻟﺤ ﺎق ھ ﺎ را در ﺧﺮوﺟ ﯽ اﺳ ﺘﺎﻧﺪارد‬
‫ﭼ ﺎپ ﻣﯿﮑﻨ ﺪ‪ .‬اﺷ ﯿﺎء ‪ String‬ﻣﺘ ﺪ دﺳ ﺘﯿﺎب )(‪ length‬را ﺟﮭ ﺖ ﺑﺪﺳ ﺖ آوردن ﺗﻌ ﺪاد ﮐﺎراﮐﺘﺮھ ﺎی رﺷ ﺘﮫ اراﺋ ﮫ‬
‫ﻣﯿﮑﻨﻨﺪ‪.‬‬

‫ﺗﺠﺰﯾﮫ ﭼﻨﺪ ﺳﻄﺤﯽ‬


‫زﺑ ﺎن ﺑﺮﻧﺎﻣ ﮫ ﻧﻮﯾﺴ ﯽ ﺟ ﺎوا ﻓﺎﻗ ﺪ دﺳ ﺘﻮر ‪ goto‬ﻣﯿﺒﺎﺷ ﺪ‪ .‬ﺟﮭ ﺖ ‪ break‬ﯾ ﺎ ‪ continue‬ﻧﻤ ﻮدن ﺳ ﺎﺧﺘﺎرھﺎی ﺳ ﻮﯾﭻ ﯾ ﺎ‬
‫ﺣﻠﻘ ﮫ ھ ﺎی ﺗﻮدرﺗ ﻮ ﭼﻨﺪﮔﺎﻧ ﮫ ﻣﯿﺘ ﻮان ﺳ ﺎﺧﺘﺎرھﺎی ﺳ ﻮﯾﭻ و ﺣﻠﻘ ﮫ را ﺑﺮﭼﺴ ﺐ ﮔ ﺬاری ﻧﻤ ﻮد و ﺳ ﭙﺲ ﺑﻠ ﻮک ﻧﺎﻣﮕ ﺬاری‬
‫ﺷﺪه را ﺑﺎ ﻗﻄﻊ ﯾﺎ اداﻣﮫ ﻣﻮاﺟﮫ ﺳﺎﺧﺖ‪.‬‬

‫ﻗﻄﻌﮫ ﮐﺪ زﯾﺮ ﺑﺨﺶ ﮐﻮﭼﮑﯽ از ﮐﻼس ﺗﻮﮐﺎر ‪ string‬در زﺑﺎن ﺟﺎوا ﻣﯿﺒﺎﺷﺪ‪:‬‬

‫{ )‪test: for (int i = fromIndex; i + max1 <= max2; i++‬‬


‫{ )‪if (charAt(i) == c0‬‬
‫{ )‪for (int k = 1; k<max1; k++‬‬
‫{ ))‪if (charAt(i+k) != str.charAt(k‬‬
‫;‪continue test‬‬
‫}‬
‫‪} /* end of inner for loop */‬‬
‫}‬
‫}‬ ‫‪/* end of outer for loop */‬‬

‫دﺳ ﺘﻮر ‪ 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‬‬

‫{ )‪for (i = (len - 1); i >= 0; i--‬‬


‫;))‪dest.appendChar(source.charAt(i‬‬
‫}‬
‫;)(‪return dest.toString‬‬
‫}‬
‫}‬

‫ﻣﺘﻐﯿ ﺮ ‪ dest‬ﺑ ﮫ ﻋﻨ ﻮان ﯾ ﮏ ﺷ ﯽ ﮐﻤﮑ ﯽ در ﺧ ﻼل اﺟ ﺮای ﻣﺘ ﺪ ‪ reverseIt‬ﻣ ﻮرد اﺳ ﺘﻔﺎده اﺳ ﺖ‪ .‬ﭘ ﺲ از‬
‫ﺑﺎزﮔﺸ ﺖ از ﻣﺘ ﺪ ‪ reverseIt‬ارﺟ ﺎع ﺑ ﮫ ﺷ ﯽ ‪ dest‬ﺑ ﺎ ﺷﮑﺴ ﺖ ﻣﻮاﺟ ﮫ ﻣﯿﺸ ﻮد و ﺑ ﮫ ﻋﺒ ﺎرﺗﯽ ﭼ ﻮن داﻣﻨ ﮫ ‪ dest‬ﺑ ﮫ‬
‫ﭘﺎﯾﺎن رﺳﯿﺪه اﺳﺖ ﺑﺮای ﭘﺎﮐﺴﺎزی )‪ (garbage collection‬ﮐﺎﻧﺪﯾﺪ ﻣﯿﺸﻮد‪.‬‬

‫ﺳﯿﺴ ﺘﻢ زﻣ ﺎن اﺟ ﺮای ﺟ ﺎوا ﻋﻤﻠﯿ ﺎت ﭘﺎﮐﺴ ﺎزی را در ﻏﺎﻟ ﺐ ﯾ ﮏ رﯾﺴ ﻤﺎن ﺑ ﺎ اوﻟﻮﯾ ﺖ ﭘ ﺎﯾﯿﻦ ھﻨﮕﺎﻣﯿﮑ ﮫ دﯾﮕ ﺮ رﯾﺴ ﻤﺎﻧﮭﺎ‬
‫ﺑ ﺮای ﺑﺪﺳ ﺖ آوردن ﺳ ﯿﮑﻠﮭﺎی ﭘﺮدازﻧ ﺪه رﻗﺎﺑ ﺖ ﻧﻤﯿﮑﻨﻨ ﺪ اﺟ ﺮا ﻣﯿﮑﻨ ﺪ‪ .‬ﻋﻤﻠﯿ ﺎت ﭘﺎﮐﺴ ﺎزی ﻣﮑﺎﻧﮭ ﺎی ﺑ ﯽ اﺳ ﺘﻔﺎده ﺣﺎﻓﻈ ﮫ‬
‫را ﺟﻤ ﻊ و ﻓﺸ ﺮده ﻣﯿﺴ ﺎزد ﺗ ﺎ ﺗﻀ ﻤﯿﻦ ﮐﻨ ﺪ ﺣﺎﻓﻈ ﮫ ﮐ ﺎﻓﯽ ﻣ ﻮرد ﻧﯿ ﺎز در ﺧ ﻼل زﻣﺎﻧﮭ ﺎﯾﯽ ﮐ ﮫ ﻓﺮاﯾﻨ ﺪھﺎی ﻣﺤ ﺎوره ای‬
‫ﺳ ﻨﮕﯿﻦ ﻣ ﻮرد اﺳ ﺘﻔﺎده ھﺴ ﺘﻨﺪ در دﺳ ﺘﺮس ﻣﯿﺒﺎﺷ ﺪ‪ .‬ﺗﮑﻨﻮﻟ ﻮژی ﺟ ﺎوا ﭼﻨ ﺪ رﯾﺴ ﻤﺎﻧﯽ را ھ ﻢ در ﺳ ﻄﺢ ﻧﺤ ﻮی زﺑ ﺎن وھ ﻢ‬
‫ﺑﻮﺳﯿﻠﮫ ﺳﯿﺴﺘﻢ زﻣﺎن اﺟﺮا ﻣﻮرد ﭘﺸﺘﯿﺒﺎﻧﯽ ﻗﺮار ﻣﯿﺪھﺪ‪.‬‬

‫‪10‬‬
‫ﺗﮑﻨﻮﻟﻮژی ﺷﯽ ﮔﺮا‬
‫ﺗﮑﻨﻮﻟ ﻮژی ﺷ ﯽ ﺑ ﮫ ﻃ ﻮر ﺳ ﺎده ﮐﻠﮑﺴ ﯿﻮﻧﯽ از ﻃﺮاﺣ ﯽ‪ ،‬ﺗﺤﻠﯿ ﻞ و ﻣﺘ ﺪوﻟﻮژی ھ ﺎی ﺑﺮﻧﺎﻣ ﮫ ﻧﻮﯾﺴ ﯽ اﺳ ﺖ ﮐ ﮫ ﺑ ﺮ روی‬
‫ﻣﺪﻟﺴ ﺎزی وﯾﮋﮔﯿﮭ ﺎ و رﻓﺘ ﺎر اﺷ ﯿﺎء در دﻧﯿ ﺎی واﻗ ﯽ ﻣﺘﻤﺮﮐ ﺰ ﺷ ﺪه اﺳ ﺖ‪ .‬اﺷ ﯿﺎء ﻣ ﺪﻟﮭﺎی ﺑﺮﻧﺎﻣ ﮫ ﻧﻮﯾﺴ ﯽ ﻧ ﺮم اﻓ ﺰار‬
‫ﻣﯿﺒﺎﺷﻨﺪ‪ .‬ﯾﮏ زﺑﺎن ﺷﯽ ﮔﺮا ﻣﯿﺒﺎﯾﺴﺖ ﺣﺪاﻗﻞ ﭼﮭﺎر وﯾﮋﮔﯽ زﯾﺮ را ﭘﺸﺘﺒﺎﻧﯽ ﻧﻤﺎﯾﺪ‪:‬‬

‫ﺑﺴﺘﮫ ﺑﻨﺪی )‪ – (encapsulation‬ﭘﻨﮭﺎن ﺳﺎزی اﻃﻼﻋﺎت و ﻣﺎژول ﺑﻨﺪی )ﺗﺠﺮﯾﺪ(‪.‬‬ ‫‪-1‬‬


‫ﭼﻨ ﺪرﯾﺨﺘﯽ )‪ – (polymorphism‬ﻧﺘﯿﺠ ﮫ رﻓﺘ ﺎری ارﺳ ﺎل ﭘﯿ ﺎﻣﯽ ﯾﮑﺴ ﺎن ﺑ ﮫ اﺷ ﯿﺎء ﻣﺘﻔ ﺎوت واﺑﺴ ﺘﮫ ﺑ ﮫ‬ ‫‪-2‬‬
‫ﻣﺎھﯿﺖ ﺷﯿﻌﯽ اﺳﺖ ﮐﮫ ﭘﯿﺎم را درﯾﺎﻓﺖ ﻣﯿﺪارد‪.‬‬
‫وراﺛ ﺖ )‪ – (inheritance‬ﺗﻌﺮﯾ ﻒ ﮐﻼﺳ ﮭﺎ و رﻓﺘﺎرھ ﺎی ﺟﺪﯾ ﺪ ﺑ ﺎ اﺳ ﺘﻔﺎده از ﮐﻼﺳ ﮭﺎی ﻣﻮﺟ ﻮد ﺟﮭ ﺖ‬ ‫‪-3‬‬
‫ﺑﺪﺳﺖ آوردن ﻗﺎﺑﻠﯿﺖ اﺳﺘﻔﺎده ﻣﺠﺪد و ﺳﺎزﻣﺎﻧﺪھﯽ ﮐﺪ‪.‬‬
‫اﻧﻘﯿ ﺎد دﯾﻨﺎﻣﯿ ﮏ )‪ – (dynamic binding‬اﺷ ﯿﺎء ﻣﯿﺘﻮاﻧﻨ ﺪ در ھ ﺮ ﺟ ﺎﯾﯽ واﻗ ﻊ ﺷ ﻮﻧﺪ‪ ،‬ﺣﺘ ﯽ ﺑ ﺮ روی ﺷ ﺒﮑﮫ‪.‬‬ ‫‪-4‬‬
‫در ھﻨﮕ ﺎم ﻧﻮﺷ ﺘﻦ ﮐ ﺪ ﺑ ﺪون داﻧﺴ ﺘﻦ ﻧ ﻮع اﺷ ﯿﺎء ﺑﺮﻧﺎﻣ ﮫ ﻧ ﻮﯾﺲ ﻗ ﺎدر اﺳ ﺖ ﺑ ﺎ آﻧﮭ ﺎ ارﺗﺒ ﺎط ﺑﺮﻗ ﺮار ﮐﻨ ﺪ‪ .‬اﻧﻘﯿ ﺎد‬
‫دﯾﻨﺎﻣﯿﮑﯽ ﺑﺎﻻﺗﺮﯾﻦ ﺣﺪ اﻧﻌﻄﺎف ﭘﺬﯾﺮی را ھﻨﮕﺎم اﺟﺮای ﺑﺮﻧﺎﻣﮫ ﻓﺮاھﻢ ﻣﯽ آورد‪.‬‬

‫ﺟ ﺎوا ﺟﮭ ﺖ ﺗﺴ ﮭﯿﻞ ﺗﻮﺳ ﻌﮫ ﻧ ﺮم اﻓ ﺰار اﯾ ﻦ ﻧﯿﺎزﻣﻨ ﺪﯾﮭﺎ را ﺑ ﮫ زﯾﺒ ﺎﯾﯽ ﻣ ﺪﻧﻈﺮ ﻗ ﺮار ﻣﯿﺪھ ﺪ و ھﻤﭽﻨ ﯿﻦ ﭘﺸ ﺘﯿﺒﺎﻧﯽ زﻣ ﺎن‬
‫اﺟﺮا را ﺑﮫ ﺻﻮرت ﻗﺎﺑﻞ ﺗﻮﺟﮭﯽ ﻣﻮرد ھﺪف ﻗﺮار داده اﺳﺖ‪.‬‬

‫‪11‬‬
‫رﻓﺘ ﺎر ﯾ ﮏ ﺷ ﯽ ﺗﻮﺳ ﻂ ﻣﺘ ﺪھﺎﯾﺶ ﺗﻌﺮﯾ ﻒ ﻣﯿﺸ ﻮد‪ .‬ﻣﺘ ﺪھﺎ ﻣﺘﻐﯿﺮھ ﺎ را ﺑ ﺮای اﯾﺠ ﺎد وﺿ ﻌﯿﺖ ﺟﺪﯾ ﺪ دﺳ ﺘﮑﺎری ﻣﯿﮑﻨﻨ ﺪ;‬
‫ﻣﺘ ﺪ ﯾ ﮏ ﺷ ﯽ ھﻤﭽﻨ ﯿﻦ ﻣﯿﺘﻮاﻧ ﺪ اﺷ ﯿﺎء ﺟﺪﯾ ﺪ را ﺧﻠ ﻖ ﮐﻨ ﺪ‪ .‬دﯾ ﺎﮔﺮام ﺑ ﺎﻻ ﻧﻤ ﺎی ﮔﺮاﻓﯿﮑ ﯽ ﺳ ﺎﺧﺘﺎر ﻣﻔﮭ ﻮﻣﯽ ﯾ ﮏ ﺷ ﯽ ﻧ ﺮم‬
‫اﻓ ﺰار را ﻧﺸ ﺎن ﻣﯿﺪھ ﺪ‪ ،‬اﯾ ﻦ ﺷ ﯽ ﺷ ﺒﯿﮫ ﺑ ﮫ ﯾ ﮏ ﺳ ﻠﻮل اﺳ ﺖ ﮐ ﮫ داری راﺑﻄ ﯽ ﺧ ﺎرﺟﯽ ﺟﮭ ﺖ ارﺗﺒ ﺎط ﺑ ﺎ ﻣﺤ ﯿﻂ و ﯾ ﮏ‬
‫ھﺴﺘﮫ داﺧﻠﯽ ﻣﯿﺒﺎﺷﺪ ﮐﮫ در ﺑﺮاﺑﺮ ﻋﻮاﻣﻞ ﺧﺎرﺟﯽ ﻣﺤﺎﻓﻈﺖ ﺷﺪه اﺳﺖ‪.‬‬

‫ﮐﻼس ھﺎ‬
‫ﮐ ﻼس ﺳ ﺎﺧﺘﺎری ﻧ ﺮم اﻓ ﺰاری اﺳ ﺖ ﮐ ﮫ داده ھ ﺎ )وﺿ ﻌﯿﺖ( و ﻣﺘ ﺪھﺎی )رﻓﺘ ﺎر( اﺷ ﯿﺎء ﺧﺎﺻ ﯽ ﮐ ﮫ ﻣﺘﻌﺎﻗﺒ ﺎ ﺗﻮﺳ ﻂ‬
‫ﮐ ﻼس اﯾﺠ ﺎد ﻣﯿﺸ ﻮﻧﺪ را ﺗﻌﺮﯾ ﻒ ﻣﯿﮑﻨ ﺪ‪ .‬در اﺻ ﻄﻼﺣﺎت ﺟ ﺎوا‪ ،‬ﮐ ﻼس ﺗﻮﺳ ﻂ ﻋﻀ ﻮھﺎﯾﯽ ﺳ ﺎﺧﺘﮫ ﻣﯿﺸ ﻮد ﮐ ﮫ ﯾ ﺎ ﻓﯿﻠ ﺪ‬
‫ﻣﯿﺒﺎﺷ ﻨﺪ و ﯾ ﺎ ﻣﺘ ﺪ‪ .‬ﻓﯿﻠ ﺪھﺎ داده ھ ﺎی ﮐ ﻼس ﻣﯿﺒﺎﺷ ﻨﺪ و ﻣﺘ ﺪھﺎ ﺳﻠﺴ ﻠﮫ ای از دﺳ ﺘﻮرات ﻣﯿﺒﺎﺷ ﻨﺪ ﮐ ﮫ ﺑ ﺮ روی داده ھ ﺎ‬
‫ﻋﻤ ﻞ ﻣﯿﮑﻨﻨ ﺪ‪ .‬ﻓﯿﻠ ﺪھﺎ ﻣﺸﺨﺼ ﮫ ھ ﺮ ﺷ ﯽ ﻣﯿﺒﺎﺷ ﻨﺪ‪ ،‬ﯾﻌﻨ ﯽ ھ ﺮ ﺷ ﯿﻌﯽ ﮐ ﮫ ﺗﻮﺳ ﻂ ﺗﻌﺮﯾ ﻒ ﮐ ﻼس اﯾﺠ ﺎد ﻣﯿﺸ ﻮد دارای ﯾ ﮏ‬
‫ﮐﭙ ﯽ ﻣﺨﺼ ﻮص ﺑ ﮫ ﺧ ﻮد از ﻓﯿﻠ ﺪھﺎ ﻣﯿﺒﺎﺷ ﺪ‪ .‬اﯾ ﻦ ﻗﺒﯿ ﻞ ﻓﯿﻠ ﺪھﺎ ﺑ ﺎ ﻧ ﺎم ﻣﺘﻐﯿﺮھ ﺎی ﻧﻤﻮﻧ ﮫ ای ﺷ ﻨﺎﺧﺘﮫ ﻣﯿﺸ ﻮﻧﺪ‪ .‬ﺑ ﮫ ﻃ ﻮر‬
‫ﻣﺸ ﺎﺑﮫ‪ ،‬ﻣﺘ ﺪھﺎ اﻋ ﻼن ﺷ ﺪه اﻧ ﺪ ﺗ ﺎ ﺑ ﺮ روی ﻣﺘﻐﯿﺮھ ﺎی ﻧﻤﻮﻧ ﮫ ای ﮐ ﻼس ﻋﻤﻠﯿ ﺎت اﻧﺠ ﺎم دھﻨ ﺪ و ﺑﻨ ﺎﺑﺮاﯾﻦ ﺑ ﺎ ﻧ ﺎم ﻣﺘ ﺪھﺎی‬
‫ﻧﻤﻮﻧ ﮫ ای ﺷ ﻨﺎﺧﺘﮫ ﻣﯿﺸ ﻮﻧﺪ‪ .‬ﮐ ﻼس ﺑ ﮫ ﺧ ﻮدی ﺧ ﻮد ﯾ ﮏ ﺷ ﯽ ﻣﺤﺴ ﻮب ﻧﻤﯿﺸ ﻮد‪ ،‬در واﻗ ﻊ ﯾ ﮏ ﮐ ﻼس ﺷ ﺒﯿﮫ ﯾ ﮏ ﻧﻘﺸ ﮫ‬
‫ﯾ ﺎ ﻧﻤ ﺎی ﮐﻠ ﯽ اﺳ ﺖ ﮐ ﮫ ﻣﺸ ﺨﺺ ﻣﯿﮑﻨ ﺪ ﯾ ﮏ ﺷ ﯽ ھﻨﮕﺎﻣﯿﮑ ﮫ ﺗﻮﺳ ﻂ اﻋﻼﻧ ﯽ ﺧ ﺎص از ﮐ ﻼس اﯾﺠ ﺎد ﻣﯿﺸ ﻮد ﭼﮕﻮﻧ ﮫ ﺑ ﮫ‬
‫ﻧﻈ ﺮ ﻣﯿﺮﺳ ﺪ و ﭼﮕﻮﻧ ﮫ رﻓﺘ ﺎر ﻣﯿﮑﻨ ﺪ‪ .‬اﺷ ﯿﺎء واﻗﻌ ﯽ ﺑﻮﺳ ﯿﻠﮫ ﮐﻼﺳ ﮭﺎی ﺗﻌﺮﯾ ﻒ ﺷ ﺪه اﯾﺠ ﺎد ﻣﯿﺸ ﻮﻧﺪ‪ .‬ﺗﻮﺳ ﻂ ﯾ ﮏ ﮐ ﻼس‬
‫ﺗﻌﺮﯾﻒ ﺷﺪه ﻣﯿﺘﻮان اﺷﯿﺎء ﺑﺴﯿﺎری را اﯾﺠﺎد ﻧﻤﻮد‪.‬‬

‫{ ‪class Point extends Object‬‬


‫‪public double x; /* instance variable */‬‬
‫‪public double y; /* instance variable */‬‬
‫}‬

‫اﻋ ﻼن ﻓ ﻮق ﯾ ﮏ ﮐ ﻼس ﺑﺴ ﯿﺎر ﺳ ﺎده ﺑ ﺎ ﻧ ﺎم ‪ point‬را ﻧﺸ ﺎن ﻣﯿﺪھ ﺪ‪ .‬ﺑ ﺎ ﻣﺸ ﺨﺺ ﺷ ﺪن اﻧ ﺪازه و ﻧﻤ ﺎی ﮐﻠ ﯽ ﮐ ﻼس‬


‫‪ ،point‬اﺷﯿﺎء ﻣﺎ اﮐﻨﻮن ﻣﯿﺘﻮاﻧﻨﺪ ﺑﺎ ﻋﻨﻮان ﺷﯽ ‪ point‬اﯾﺠﺎد ﺷﻮﻧﺪ‬

‫‪12‬‬
:point ‫ﯾﮏ ﻧﻤﻮﻧﮫ ﺳﺎزی از ﮐﻼس‬

Point myPoint; // declares a variable to refer to a Point object

myPoint = new Point(); // allocates an instance of a Point object

:‫ ﺑﻮﺳﯿﻠﮫ ارﺟﺎع ﺑﮫ ﻧﺎم ﻣﺘﻐﯿﺮھﺎ دﺳﺖ ﭘﯿﺪا ﻧﻤﻮد‬point ‫ﺣﺎل ﻣﯿﺘﻮان ﺑﮫ ﻣﺘﻐﯿﺮھﺎی اﯾﻦ ﺷﯽ‬

myPoint.x = 10.0;
myPoint.y = 25.7

‫ﺳﺎزﻧﺪه ھﺎ‬
‫ ﻣﯿﺘ ﻮان ﺳ ﺎزﻧﺪه ھ ﺎی اﺧﺘﯿ ﺎری را ﮐ ﮫ ﻣﺘﻐﯿﺮھ ﺎی ﻧﻤﻮﻧ ﮫ ای را در ھﻨﮕ ﺎم ﻧﻤﻮﻧ ﮫ‬،‫ھﻨﮕ ﺎم اﻋ ﻼن ﯾ ﮏ ﮐ ﻼس در ﺟ ﺎوا‬
.‫ﺳﺎزی ﺷﯽ از ﮐﻼس ﻣﻘﺪاردھﯽ اوﻟﯿﮫ ﻣﯿﮑﻨﻨﺪ اﻋﻼن ﻧﻤﻮد‬

class Point extends Object {


public double x; /* instance variable */
public double y; /* instance variable */

Point() { /* constructor to initialize to default zero value */


x = 0.0;
y = 0.0;
}
/* constructor to initialize to specific value */
Point(double x, double y) {
this.x = x; /* set instance variables to passed parameters */
this.y = y;
}
}

‫ ﻣﺘ ﺪ‬،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‬ارﺳ ﺎل ﻣﯿﺸ ﻮد‪ .‬در ﻣﺜ ﺎل ﻗﺒﻠ ﯽ از ﺳ ﺎزﻧﺪه ھ ﺎ ﺗﻨﮭ ﺎ ﺟﮭ ﺖ راﺣﺘ ﯽ ﮐ ﺎر اﺳ ﺘﻔﺎده ﮐ ﺮدﯾﻢ‪ ،‬اﻣ ﺎ ﻣ ﻮاﻗﻌﯽ‬
‫وﺟ ﻮد دارد ﮐ ﮫ ﺳ ﺎزﻧﺪه ھ ﺎ ﺿ ﺮوری ﻣﯿﺒﺎﺷ ﻨﺪ‪ ،‬ﻣﺨﺼﻮﺻ ﺎ ھﻨﮕﺎﻣﯿﮑ ﮫ اﺷ ﯿﺎﻋﯽ ﮐ ﮫ ﻧﻤﻮﻧ ﮫ ﺳ ﺎزی ﻣﯿﺸ ﻮﻧﺪ ﻣﯿﺒﺎﯾﺴ ﺖ‬
‫ﺧﻮدﺷﺎن اﺷﯿﺎء دﯾﮕﺮی را ﻧﻤﻮﻧﮫ ﺳﺎزی ﻧﻤﺎﯾﻨﺪ‪:‬‬

‫{ ‪class Rectangle extends Object‬‬


‫;‪private Point lowerLeft‬‬
‫;‪private Point upperRight‬‬

‫{ )(‪Rectangle‬‬
‫;)(‪lowerLeft = new Point‬‬
‫;)(‪upperRight = new Point‬‬
‫}‬
‫‪...‬‬
‫‪instance methods appear in here‬‬
‫‪...‬‬
‫}‬

‫در اﯾ ﻦ ﻣﺜ ﺎل ﮐ ﻼس ‪ Rectangle‬ﺟﮭ ﺖ ﺗﻌﺮﯾ ﻒ ﺣ ﺪود از دو ﺷ ﯽ ‪ point‬اﺳ ﺘﻔﺎده ﻣﯿﮑﻨ ﺪ‪ .‬ﺑﻨ ﺎﺑﺮاﯾﻦ ﺑ ﺮای اﻃﻤﯿﻨ ﺎن‬
‫ازاﯾﻨﮑ ﮫ اﺷ ﯿﺎء ‪ point‬در ﻟﺤﻈ ﮫ اﯾﺠ ﺎد ﺷ ﯽ ‪ Rectangle‬ﻧﻤﻮﻧ ﮫ ﺳ ﺎزی ﺷ ﺪه اﻧ ﺪ وﺟ ﻮد ﺳ ﺎزﻧﺪه ﺑ ﺮای ‪Rectangle‬‬
‫ﺿﺮوری ﺑﮫ ﻧﻈﺮ ﻣﯿﺮﺳﺪ‪ ،‬در ﻏﯿﺮ اﯾﻨﺼﻮرت ﻣﺴﺌﻠﮫ ﺑﮫ ﻣﺸﮑﻞ ﺑﺮﻣﯿﺨﻮرد و در ﻧﮭﺎﯾﺖ ﺑﺎ ﺷﮑﺴﺖ روﺑﺮو ﻣﯿﺸﻮد‪.‬‬

‫ارﺗﺒﺎط ﻣﺎﺑﯿﻦ اﺷﯿﺎء و ﻣﺘﺪھﺎ‬

‫‪14‬‬
‫اﮔ ﺮ ﺷ ﯿﻌﯽ از دﯾﮕ ﺮ اﺷ ﯿﺎء درﺧﻮاﺳ ﺖ ﮐﻨ ﺪ ﺗ ﺎ ﺑﺮﺧ ﯽ ﮐﺎرھ ﺎ را ﺑ ﺮاﯾﺶ اﻧﺠ ﺎم دھ ﺪ‪ ،‬ﺑﻨ ﺎﺑﺮ ﺳﯿﺴ ﺘﻢ ﻣﺤ ﺎوره در ﺑﺮﻧﺎﻣ ﮫ‬
‫ﻧﻮﯾﺴ ﯽ ﺷ ﯽ ﮔ ﺮا‪ ،‬ﺷ ﯽ ﻧﺨﺴ ﺖ ﭘﯿ ﺎﻣﯽ را ﺑ ﮫ ﺷ ﯽ دوم ﻣﯿﻔﺮﺳ ﺘﺪ و ﺳ ﭙﺲ ﺷ ﯽ دوم ﻣﺘ ﺪ ﺧﺎﺻ ﯽ را ﺑ ﺮای ﻓﺮاﺧ ﻮاﻧﯽ‬
‫ﺑﺮﻣﯿﮕﺰﯾﻨ ﺪ‪ .‬ﺑ ﺎ اﺳ ﺘﻔﺎده از ﭘ ﺎراداﯾﻢ ارﺳ ﺎل ﭘﯿ ﺎم در ﺑﺮﻧﺎﻣ ﮫ ﻧﻮﯾﺴ ﯽ ﺷ ﯽ ﮔ ﺮا ﻣﯿﺘ ﻮان اﺷ ﯿﺎﻋﯽ ﺑ ﺮ روی وب ﯾ ﺎ ﺷ ﺒﮑﮫ ھ ﺎ‬
‫ﺳ ﺎﺧﺖ ﮐ ﮫ ﺟﮭ ﺖ ﺗﻘﯿﯿ ﺮ وﺿ ﻌﯿﺖ از ﺳﯿﺴ ﺘﻢ ارﺳ ﺎل ﭘﯿ ﺎم ﻣ ﺎﺑﯿﻦ اﺷ ﯿﺎء اﺳ ﺘﻔﺎده ﻣﯿﺸ ﻮد‪ .‬اﯾ ﻦ ﺗﮑﻨﯿ ﮏ ﺑﺮﻧﺎﻣ ﮫ ﻧﻮﯾﺴ ﯽ ﯾﮑ ﯽ‬
‫از ﺑﮭﺘﺮﯾﻦ ﺷﯿﻮه ھﺎی اﯾﺠﺎد ﻣﺪﻟﮭﺎ و ﺷﺒﯿﮫ ﺳﺎزی ﺳﯿﺴﺘﻤﮭﺎی ﭘﯿﭽﯿﺪه در دﻧﯿﺎی واﻗﻌﯽ ﻣﯿﺒﺎﺷﺪ‪.‬‬

‫{ ‪class Point extends Object‬‬


‫‪private double x; /* instance variable */‬‬
‫‪private double y; /* instance variable */‬‬

‫‪Point() { /* constructor to initialize to zero */‬‬


‫;‪x = 0.0‬‬
‫;‪y = 0.0‬‬
‫}‬
‫‪/* constructor to initialize to specific value */‬‬
‫{ )‪Point(double x, double y‬‬
‫;‪this.x = x‬‬
‫;‪this.y = y‬‬
‫}‬
‫‪public void setX(double x) { /* accessor method */‬‬
‫;‪this.x = x‬‬
‫}‬
‫‪public void setY(double y) { /* accessor method */‬‬
‫;‪this.y = y‬‬
‫}‬
‫‪public double getX() { /* accessor method */‬‬
‫;‪return x‬‬
‫}‬
‫‪public double getY() { /* accessor method */‬‬
‫;‪return y‬‬
‫}‬
‫}‬

‫اﯾ ﻦ ﻣﺘ ﺪھﺎ ﻧﺸ ﺎن ﻣﯿﺪھﻨ ﺪ ﮐ ﮫ ﭼﮕﻮﻧ ﮫ ﮐ ﻼس ‪ 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 */

Point() { /* constructor to initialize to zero */


x = 0.0;
y = 0.0;
}
}
class ThreePoint extends Point {
protected double z; /* the z coordinate of the point */

ThreePoint() { /* default constructor */


x = 0.0; /* initialize the coordinates */
y = 0.0;
z = 0.0;
}
ThreePoint(double x, double y, double z) {/* specific constructor */
this.x = x; /* initialize the coordinates */
this.y = y;
this.z = z;
}
}

16
‫ﮐﻠﻤ ﮫ ﮐﻠﯿ ﺪی ‪ extends‬ﺑ ﮫ ﮐﺎﻣﭙ ﺎﯾﻠﺮ ﺟ ﺎوا ﻣﯿﮕﻮﯾ ﺪ ﮐ ﮫ ‪ ThreePoint‬زﯾﺮﮐﻼﺳ ﯽ از ‪ point‬اﺳ ﺖ‪ .‬ﻣﺸ ﺎھﺪه ﻣﯿﺸ ﻮد‬
‫ﮐ ﮫ در ﮐ ﻼس ‪ point‬ﻣﺘﻐﯿﺮھ ﺎی ﻧﻤﻮﻧ ﮫ ای ﺑ ﮫ ﺻ ﻮرت ﻣﺤﺎﻓﻈ ﺖ ﺷ ﺪه اﻋ ﻼن ﻧﻤ ﻮده ﯾ ﻢ و ﻧ ﮫ ﺧﺼﻮﺻ ﯽ‪ ،‬زﯾ ﺮا زﯾ ﺮ‬
‫ﮐﻼﺳ ﮭﺎ ﻧﯿ ﺰ ﻧﻤﯿﺘﻮاﻧﻨ ﺪ ﺑ ﮫ اﻋﻀ ﺎء ﺧﺼﻮﺻ ﯽ ﯾ ﮏ ﮐ ﻼس دﺳﺘﺮﺳ ﯽ داﺷ ﺘﮫ ﺑﺎﺷ ﻨﺪ‪ .‬ﺗﻤ ﺎﻣﯽ ﮐﻼﺳ ﮭﺎ در ﺟ ﺎوا در ﻧﮭﺎﯾ ﺖ‬
‫از ‪ Object‬ارث ﻣﯿﺒﺮﻧﺪ‪ ،‬زﯾﺮا ‪ Object‬ﻋﻤﻮﻣﯽ ﺗﺮﯾﻦ ﮐﻼس ﺑﺸﻤﺎر ﻣﯽ آﯾﺪ‪.‬‬

‫ﺳﻠﺴﻠﮫ ﻣﺮاﺗﺐ ﮐﻼس و وراﺛﺖ‬


‫در ﺟ ﺎوا ﯾ ﮏ ﮐ ﻼس ﺟﺪﯾ ﺪ ﻣﯿﺘﻮاﻧ ﺪ ﺗﻨﮭ ﺎ از ﯾ ﮏ ﮐ ﻼس دﯾﮕ ﺮ ﻣﺸ ﺘﻖ ﺷ ﻮد‪ .‬ﺑ ﮫ ﻋﺒ ﺎرﺗﯽ ﮐ ﻼس ﺳﻠﺴ ﻠﮫ ﻣﺮاﺗﺒ ﯽ در ﺟ ﺎوا‬
‫ﺷ ﺒﯿﮫ درﺧﺘ ﯽ اﺳ ﺖ ﮐ ﮫ ‪ Object‬در رﯾﺸ ﮫ آن ﻗ ﺮار دارد‪ .‬ﭘﯿ ﺎده ﺳ ﺎزی اﯾ ﻦ ﻣ ﺪل ﺑ ﺎ ﻧ ﺎم وراﺛ ﺖ ﻣﻨﻔ ﺮد ﻟﻘ ﺐ ﮔﺮﻓﺘ ﮫ‬
‫اﺳﺖ‪.‬‬

‫‪17‬‬
‫ﺳﺎﺧﺘﻤﺎن داده ھﺎ در ﺟﺎوا‬
‫ﻣﺘﻐﯿﺮھﺎ‬
‫ﻣﺘﻐﯿ ﺮ اﯾ ﺪه ای اﺳ ﺖ اﻧﺘﺰاﻋ ﯽ در زﺑ ﺎن ﺑﺮﻧﺎﻣ ﮫ ﻧﻮﯾﺴ ﯽ ﮐ ﮫ ﯾ ﮏ ﻣﮑ ﺎن ذﺧﯿ ﺮه ﺳ ﺎزی را ﻧﺸ ﺎن ﻣﯿﺪھ ﺪ‪ .‬ﯾ ﮏ ﻣﺘﻐﯿ ﺮ‬
‫زﺑ ﺎن ﺟ ﺎوا دارای ﺧﺼﻮﺻ ﯿﺎﺗﯽ ﻣﯿﺒﺎﺷ ﺪ‪ :‬ﻧ ﺎم )ﺑﺮﭼﺴ ﺐ ﻣ ﻮرد اﺳ ﺘﻔﺎده ﺟﮭ ﺖ ﺷﻨﺎﺳ ﺎﯾﯽ ﯾ ﮏ ﻣﺘﻐﯿ ﺮ در ﻣ ﺘﻦ ﺑﺮﻧﺎﻣ ﮫ( –‬
‫ﻧ ﻮع ) ﻧ ﻮع ﯾ ﮏ ﻣﺘﻐﯿ ﺮ ﻣﺠﻤﻮﻋ ﮫ ﻣﻘ ﺎدﯾﺮ و ﻣﺠﻤﻮﻋ ﮫ ﻋﻤﻠﯿ ﺎﺗﯽ ﮐ ﮫ ﻣﯿﺘﻮاﻧ ﺪ ﺑ ﺮ روی ﻣﺘﻐﯿ ﺮ اﻋﻤ ﺎل ﺷ ﻮد را ﺗ ﺎﯾﯿﻦ‬
‫ﻣﯿﮑﻨ ﺪ( – ﻣﻘ ﺪار )ﻣﻘ ﺪار ﯾ ﮏ ﻣﺘﻐﯿ ﺮ ﻣﺤﺘ ﻮای ﻣﮑ ﺎن ﺣﺎﻓﻈ ﮫ ای اﺳ ﺖ ﮐ ﮫ ﺑﻮﺳ ﯿﻠﮫ ﻣﺘﻐﯿ ﺮ اﺷ ﻐﺎل ﺷ ﺪه اﺳ ﺖ‪ .‬ﭼﮕ ﻮﻧﮕﯽ‬
‫ﺗﻔﺴ ﯿﺮ ﻣﺤﺘﻮﯾ ﺎت ﻣﮑ ﺎن ھ ﺎی ﺣﺎﻓﻈ ﮫ ﺗﻮﺳ ﻂ ﻧ ﻮع ﻣﺘﻐﯿ ﺮ ﺗ ﺎﯾﯿﻦ ﻣﯿﺸ ﻮد( – ﻃ ﻮل ﻋﻤ ﺮ )ﻃ ﻮل ﻋﻤ ﺮ ﯾ ﮏ ﻣﺘﻐﯿ ﺮ ﻣ ﺪت‬
‫زﻣ ﺎﻧﯽ اﺳ ﺖ در ھﻨﮕ ﺎم اﺟ ﺮای ﺑﺮﻧﺎﻣ ﮫ ﮐ ﮫ ﻣﺘﻐﯿ ﺮ وﺟ ﻮد دارد‪ .‬ﻣﺘﻐﯿﺮھ ﺎی ﻣﺤﻠ ﯽ ﺗ ﺎ زﻣ ﺎﻧﯽ وﺟ ﻮد دارﻧ ﺪ ﮐ ﮫ ﻣﺘ ﺪ‬
‫ﺣ ﺎوی اﻋ ﻼن آﻧﮭ ﺎ ﻓﻌ ﺎل اﺳ ﺖ‪ .‬ﻓﯿﻠ ﺪھﺎی ﻏﯿ ﺮ اﯾﺴ ﺘﺎی ﯾ ﮏ ﮐ ﻼس ﺗ ﺎ زﻣ ﺎﻧﯽ وﺟ ﻮد دارﻧ ﺪ ﮐ ﮫ ﺷ ﯿﻌﯽ ﮐ ﮫ اﯾ ﻦ اﻋﻀ ﺎء‬
‫ﻋﻀ ﻮ آن ﻣﺤﺴ ﻮب ﻣﯿﺸ ﻮد وﺟ ﻮد داﺷ ﺘﮫ ﺑﺎﺷ ﺪ‪ .‬ﻓﯿﻠ ﺪھﺎی اﺳ ﺘﺎﺗﯿﮑﯽ ﯾ ﮏ ﮐ ﻼس ﺗ ﺎ زﻣ ﺎﻧﯽ وﺟ ﻮد دارﻧ ﺪ ﮐ ﮫ ﮐ ﻼس‬
‫ﺣ ﺎوی ﺗﻌﺮﯾ ﻒ اﯾ ﻦ ﻓﯿﻠ ﺪھﺎ در ﻣﺎﺷ ﯿﻦ ﻣﺠ ﺎزی ﺟ ﺎوا ﺑ ﺎﻗﯽ ﺑﻤﺎﻧ ﺪ( – داﻣﻨ ﮫ )داﻣﻨ ﮫ ﯾ ﮏ ﻣﺘﻐﯿ ﺮ ﺑ ﺎزه ای از ﻣ ﺘﻦ ﺑﺮﻧﺎﻣ ﮫ‬
‫اﺳﺖ ﮐﮫ ﻣﺘﻐﯿﺮ ﻣﯿﺘﻮاﻧﺪ ﻣﻮرد ارﺟﺎع واﻗﻊ ﺷﻮد(‪.‬‬

‫ﺑﺮﺧ ﯽ ﺻ ﻔﺎت ﯾ ﮏ ﻣﺘﻐﯿ ﺮ از ﻗﺒﯿ ﻞ ﻧ ﺎم و ﻧ ﻮع در زﻣ ﺎن ﮐﺎﻣﭙﺎﯾ ﻞ ﻣﺸ ﺨﺺ ﻣﯿﺸ ﻮﻧﺪ )اﻧﻘﯿ ﺎد اﯾﺴ ﺘﺎ(‪ ،‬ﺑﺮﺧ ﯽ دﯾﮕ ﺮ از‬
‫ﺻﻔﺎت ﯾﮏ ﻣﺘﻐﯿﺮ از ﻗﺒﯿﻞ ﻣﻘﺪار ﻣﻤﮑﻦ اﺳﺖ در زﻣﺎن اﺟﺮا ﻣﺸﺨﺺ ﺷﻮد )اﻧﻘﯿﺎد ﭘﻮﯾﺎ(‪.‬‬

‫دو ﻧ ﻮع ﻣﺘﻐﯿ ﺮ در ﺟ ﺎوا وﺟ ﻮد دارﻧ ﺪ‪ :‬ﻣﺘﻐﯿ ﺮی ﮐ ﮫ در داﺧ ﻞ ﻣﺘ ﺪ اﻋ ﻼن ﻣﯿﺸ ﻮد )ﻣﺘﻐﯿ ﺮ ﻣﺤﻠ ﯽ(‪ ،‬ﻣﺘﻐﯿ ﺮی ﮐ ﮫ در ﺑﺪﻧ ﮫ‬
‫ﮐﻼس اﻋﻼن ﻣﯿﺸﻮد )ﻓﯿﻠﺪ(‪ .‬ﻧﻮع ﯾﮏ ﻣﺘﻐﯿﺮ ﺟﺎوا ﯾﺎ ﯾﮑﯽ از اﻧﻮاع اﭘﺘﺪاﯾﯽ اﺳﺖ و ﯾﺎ از ﻧﻮع ارﺟﺎع اﺳﺖ‪.‬‬

‫اﻧﻮاع‬
‫اﻧﻮاع اوﻟﯿﮫ ﻋﺒﺎرﺗﻨﺪ از ‪.boolean, char, short, int, long, float, double‬‬

‫ﺟ ﺎوا ھﻤﭽﻨ ﯿﻦ از اﻧ ﻮاع ﺗﻌﺮﯾ ﻒ ﺷ ﺪه ﺗﻮﺳ ﻂ ﮐ ﺎرﺑﺮ ﭘﺸ ﺘﯿﺒﺎﻧﯽ ﻣﯿﮑﻨ ﺪ‪ .‬اﻧ ﻮاع ﺗﻌﺮﯾ ﻒ ﺷ ﺪه ﺗﻮﺳ ﻂ ﮐ ﺎرﺑﺮ ﺑﻮﺳ ﯿﻠﮫ ﺗﻌﺮﯾ ﻒ‬
‫ﮐ ﻼس اﯾﺠ ﺎد ﻣﯿﺸ ﻮﻧﺪ‪ .‬ﺑ ﮫ ﻋﻨ ﻮان ﻣﺜ ﺎل ﺑ ﺎ ﺗﻌﺮﯾ ﻒ ﮐ ﻼس ‪ Foo‬ﻧ ﻮع ﺟﺪﯾ ﺪی ﺧﻠ ﻖ ﻣﯿﺸ ﻮد ﮐ ﮫ ﻣﯿﺘﻮاﻧ ﺪ ﺑ ﺮای اﻋ ﻼن‬
‫ﻣﺘﻐﯿﺮ ﻣﻮرد اﺳﺘﻔﺎده ﻗﺮار ﮔﯿﺮد‪:‬‬

‫;‪Foo f‬‬

‫در زﺑ ﺎن ﺟ ﺎوا ھ ﺮ ﻣﺘﻐﯿ ﺮی ﮐ ﮫ از ﻧ ﻮع ﯾﮑ ﯽ از اﻧ ﻮاع اﭘﺘ ﺪاﯾﯽ ﻧﺒﺎﺷ ﺪ‪ ،‬ﻣﺘﻐﯿ ﺮ ﻧ ﻮع ارﺟ ﺎع ﺧﻮاﻧ ﺪه ﻣﯿﺸ ﻮد‪ .‬اﯾ ﻦ ﻗﺒﯿ ﻞ‬
‫ﻣﺘﻐﯿ ﺮ ﻣﯿﺘﻮاﻧ ﺪ ﺑ ﮫ ﻋﻨ ﻮان ارﺟ ﺎع ﺑ ﮫ )ﯾ ﺎ اﺷ ﺎره ﺑ ﮫ( ﯾ ﮏ ﺷ ﯽ ﺑ ﺎ ﻧ ﻮﻋﯽ ﺧ ﺎص ﺗﺼ ﻮر ﺷ ﻮد‪ .‬ﺑﻨ ﺎﺑﺮاﯾﻦ‪ ،‬ﻣﺘﻐﯿ ﺮ ‪ f‬ﮐ ﮫ در‬
‫ﺑﺎﻻ ﺗﻌﺮﯾﻒ ﺷﺪ ﯾﮏ ارﺟﺎع ﺑﮫ ﺷﯽ ﮐﻼس ‪ Foo‬ﻣﯿﺒﺎﺷﺪ‪.‬‬

‫‪18‬‬
‫در ﺟ ﺎوا ﻧﻤﻮﻧ ﮫ ھ ﺎی ﮐ ﻼس ﻣﯿﺒﺎﯾﺴ ﺖ ﺑ ﮫ ﺻ ﻮرت ﺻ ﺮﯾﺢ اﯾﺠ ﺎد ﺷ ﻮﻧﺪ‪ .‬ﯾ ﮏ ﻧﻤﻮﻧ ﮫ از ﯾ ﮏ ﮐ ﻼس ﺑ ﺎ اﺳ ﺘﻔﺎده از‬
‫ﻋﻤﻠﮕﺮ ‪ new‬اﯾﺠﺎد ﻣﯿﺸﻮد‪:‬‬

‫;)( ‪f = new Foo‬‬

‫ﺑﻮﺳﯿﻠﮫ دﺳﺘﻮر اﻧﺘﺴﺎب زﯾﺮ ھﻢ ‪ f‬و ھﻢ ‪ g‬ﺑﮫ ﯾﮏ ﺷﯽ ارﺟﺎع ﻣﯿﺸﻮﻧﺪ‪:‬‬


‫;‪Foo g = f‬‬
‫ﺗﻮﺟﮫ دارﯾﻢ ﮐﮫ اﯾﻦ دﺳﺘﻮر ﺑﺎ اﻧﺘﺴﺎب ﯾﮏ ﻧﻮع اوﻟﯿﮫ ﺑﮫ ﯾﮏ ﻣﺘﻐﯿﺮ ﺑﺴﯿﺎر ﻣﺘﻔﺎوت اﺳﺖ‪.‬‬
‫)‪if (f == g‬‬
‫دﺳ ﺘﻮر ﻓ ﻮق ﭼ ﮏ ﻣﯿﮑﻨ ﺪ ﮐ ﮫ آﯾ ﺎ ‪ f‬و ‪ g‬ﺑ ﮫ ﺷ ﯽ ﯾﮑﺴ ﺎن ارﺟ ﺎع دارﻧ ﺪ‪ .‬اﮔ ﺮ ‪ f‬و ‪ g‬ﺑ ﮫ اﺷ ﯿﺎء ﻣﺘﻔ ﺎوﺗﯽ ﮐ ﮫ ﺑﺮاﺑ ﺮ ﻣﯿﺒﺎﺷ ﻨﺪ‬
‫ارﺟ ﺎع داﺷ ﺘﮫ ﺑﺎﺷ ﻨﺪ‪ ،‬ﺷ ﺮط ﻧﺎدرﺳ ﺖ ﻣﯿﺒﺎﺷ ﺪ‪ .‬ﺑ ﺮای آزﻣ ﺎﯾﺶ اﯾﻨﮑ ﮫ دو ﺷ ﯽ ﺑﺮاﺑ ﺮ ﻣﯿﺒﺎﺷ ﻨﺪ ﻻزم اﺳ ﺖ ﻣﺘ ﺪ ‪eguals‬‬
‫ﻓﺮاﺧﻮاﻧﯽ ﺷﻮد‪:‬‬
‫))‪if (f.equals(g‬‬
‫} ‪{ /* ... */‬‬

‫در زﺑ ﺎن ﺟ ﺎوا ﯾ ﮏ ﻣﺘﻐﯿ ﺮ ﺑ ﺎ ﻧ ﻮع ارﺟ ﺎع ﻣﻤﮑ ﻦ اﺳ ﺖ ﺑ ﮫ ھ ﯿﭻ ﭼﯿ ﺰ اﺷ ﺎره ﻧﮑﻨ ﺪ‪ .‬ارﺟ ﺎﻋﯽ ﮐ ﮫ ﺑ ﮫ ھ ﯿﭻ ﭼﯿ ﺰ ارﺟ ﺎع‬
‫داده ﻧﺸ ﻮد ارﺟ ﺎع ﺗﮭ ﯽ ﻧﺎﻣﯿ ﺪه ﻣﯿﺸ ﻮد‪ .‬ﺑ ﮫ ﺻ ﻮرت ﭘﯿﺸ ﻔﺮض ﯾ ﮏ ارﺟ ﺎع ﮐ ﮫ ﻣﻘ ﺪاردھﯽ اوﻟﯿ ﮫ ﻧﺸ ﺪه اﺳ ﺖ ﺗﮭ ﯽ‬
‫ﻣﯿﺒﺎﺷﺪ‪.‬‬

‫ارﺳﺎل ﭘﺎراﻣﺘﺮ‬
‫ارﺳ ﺎل ﭘ ﺎراﻣﺘﺮ ﺑ ﮫ ﻣﮑﺎﻧﯿﺴ ﻤﯽ اﻃ ﻼق ﻣﯿﺸ ﻮد ﮐ ﮫ ﭼﮕ ﻮﻧﮕﯽ اﻧﺘﻘ ﺎل ﭘﺎرﻣﺘﺮھ ﺎ ﻣ ﺎﺑﯿﻦ ﻣﺘ ﺪھﺎ را ھﻨﮕﺎﻣﯿﮑ ﮫ ﻣﺘ ﺪی ﻣﺘ ﺪھﺎی‬
‫دﯾﮕ ﺮ را ﻓﺮاﺧ ﻮاﻧﯽ ﻣﯿﮑﻨ ﺪ ﺗﺸ ﺮﯾﺢ ﻣﯿﻨﻤﺎﯾ ﺪ‪ .‬ﺟ ﺎوا ﺗﻨﮭ ﺎ روش ارﺳ ﺎل ﺑﻮﺳ ﯿﻠﮫ ﻣﻘ ﺪار را ﭘﺸ ﺘﯿﺒﺎﻧﯽ ﻣﯿﮑﻨ ﺪ‪ .‬ﺑﺮﻧﺎﻣ ﮫ زﯾ ﺮ‬
‫را در ﻧﻈﺮ ﺑﮕﯿﺮﯾﺪ‪:‬‬

‫‪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‬و وراﺛﺖ ﺻﻮرت ﻣﯿﭙﺬﯾﺮد‪.‬‬

‫اﻋﻀﺎء ﮐﻼس‪ :‬ﻓﯿﻠﺪھﺎ و ﻣﺘﺪھﺎ‬


‫ﯾ ﮏ ﮐ ﻼس ﮔﺮوھ ﯽ از ﻣﺠﻤﻮﻋ ﮫ ﻣﻘ ﺎدﯾﺮ و ﻣﺠﻤﻮﻋ ﮫ ﻋﻤﻠﯿ ﺎت را ﻣﺸ ﺨﺺ ﻣﯿﮑﻨ ﺪ‪ .‬ﻣﻘ ﺎدﯾﺮ و ﻋﻤﻠﯿ ﺎت ﯾ ﮏ ﮐ ﻼس را‬
‫ﻋﻀ ﻮھﺎی ﮐ ﻼس ﻣﯿﺨ ﻮاﻧﯿﻢ‪ .‬ﻓﯿﻠ ﺪھﺎ ﻣﻘ ﺎدﯾﺮ را ﭘﯿ ﺎده ﺳ ﺎزی ﻣﯿﮑﻨﻨ ﺪ و ﻣﺘ ﺪھﺎ ﻋﻤﻠﯿ ﺎت را ﭘﯿ ﺎده ﺳ ﺎزی ﻣﯿﻨﻤﺎﯾﻨ ﺪ‪ .‬ﻓ ﺮض‬
‫ﮐﻨﯿ ﺪ ﻣﯿﺨ ﻮاھﯿﻢ ﮐﻼﺳ ﯽ را ﺑ ﺮای ﻧﻤ ﺎﯾﺶ اﻋ ﺪاد ﻣﺨ ﺘﻠﻂ ﻃﺮاﺣ ﯽ ﮐﻨ ﯿﻢ‪ .‬ﮐ ﻼس ‪ Complex‬در زﯾ ﺮ آﻣ ﺪه اﺳ ﺖ‪ .‬دو ﻓﯿﻠ ﺪ‬
‫‪ real‬و ‪ imag‬ﺑ ﮫ ﺗﺮﺗﯿ ﺐ ﺑﺨﺸ ﮭﺎی ﺣﻘﯿﻘ ﯽ و ﻣ ﻮھﻤﯽ ﯾ ﮏ ﻋ ﺪد ﻣﺨ ﺘﻠﻂ را ﻣﺸ ﺨﺺ ﻣﯿﺴ ﺎزﻧﺪ‪ .‬ھﻤﭽﻨ ﯿﻦ دو ﻣﺘ ﺪ‬
‫‪ setReal‬و ‪ setImag‬ﺟﮭﺖ اﻧﺘﺴﺎب ﻣﻘﺎدﯾﺮ ﺑﮫ ﺑﺨﺸﮭﺎی ﺣﻘﯿﻘﯽ و ﻣﻮھﻤﯽ ﯾﮏ ﻋﺪد ﻣﺨﺘﻠﻂ ﺗﻌﺮﯾﻒ ﺷﺪه اﻧﺪ‪.‬‬

‫‪21‬‬
‫ھﺮ ﺷﯽ ﮐﻼس ‪ complex‬دارای ﻓﯿﻠﺪھﺎی ﻣﺨﺼﻮص ﺑﮫ ﺧﻮد ﻣﯿﺒﺎﺷﺪ‪:‬‬

‫;)( ‪Complex c = new Complex‬‬


‫;)( ‪Complex d = new Complex‬‬

‫‪ c‬و ‪ d‬دو ﻧﻤﻮﻧ ﮫ ﻣﺘﻔ ﺎوت از ﮐ ﻼس ‪ Complex‬ھﺴ ﺘﻨﺪ‪ .‬ازاﯾﻨ ﺮو‪ ،‬ھﺮﮐ ﺪام دارای ﻓﯿﻠ ﺪ ‪ real‬و ‪ imag‬ﻣﺨﺼ ﻮص ﺑ ﮫ‬
‫ﺧ ﻮد ھﺴ ﺘﻨﺪ‪ .‬ﺑﺮﻧﺎﻣ ﮫ ﻓ ﻮق ھﻤﭽﻨ ﯿﻦ ﻣﺘ ﺪھﺎی ‪ setReal‬و ‪ setImag‬را ﺗﻌﺮﯾ ﻒ ﻣﯿﮑﻨ ﺪ‪ .‬در ﺣﺎﻟ ﺖ ﮐﻠ ﯽ ﯾ ﮏ ﻣﺘ ﺪ‬
‫ﺑﺮﺧ ﯽ ﻋﻤﻠﯿ ﺎت را ﺑ ﺮ روی ﯾ ﮏ ﻧﻤﻮﻧ ﮫ از ﮐ ﻼس اﻧﺠ ﺎم ﻣﯿﺪھ ﺪ‪ .‬ﻋﻤﻠﮕ ﺮ دات )‪ (.‬ﺟﮭ ﺖ دﺳ ﺘﯿﺎﺑﯽ ﺑ ﮫ ﻓﯿﻠ ﺪھﺎی ﯾ ﮏ ﺷ ﯽ‬
‫و ھﻤﭽﻨﯿﻦ ﻣﺸﺨﺺ ﺳﺎﺧﺘﻦ ﺷﯿﻌﯽ ﮐﮫ ﻋﻤﻠﯿﺎت ﺑﺮ روی آن اﻧﺠﺎم ﻣﯿﭙﺰﯾﺮد ﻣﻮرد اﺳﺘﻔﺎده ﻗﺮار ﻣﯿﮕﯿﺮد‪.‬‬

‫ﯾ ﮏ ﺳ ﺎزﻧﺪه ﻣﺘ ﺪی اﺳ ﺖ ھﻤﻨ ﺎم ﮐ ﻼس ﮐ ﮫ ھ ﯿﭻ ﻣﻘ ﺪاری را ﺑﺮﻧﻤﯿﮕﺮداﻧ ﺪ‪ .‬ھ ﺪف ﯾ ﮏ ﺳ ﺎزﻧﺪه ﻣﻘ ﺪاردھﯽ اوﻟﯿ ﮫ ﺑ ﮫ ﺷ ﯽ‬


‫ﻣﯿﺒﺎﺷ ﺪ‪ .‬ﺳ ﺎزﻧﺪه ھﻨﮕ ﺎﻣﯽ ﻓﺮاﺧ ﻮاﻧﯽ ﻣﯿﺸ ﻮد ﮐ ﮫ ﻧﻤﻮﻧ ﮫ ای ﺟﺪﯾ ﺪ از ﯾ ﮏ ﮐ ﻼس ﺗﻮﺳ ﻂ ﻋﻤﻠﮕ ﺮ ‪ new‬اﯾﺠ ﺎد ﺷ ﻮد‪ .‬ﺣ ﺎل‬
‫ﻣﯿﺨﻮاھﯿﻢ ﮐﻼس ‪ Complex‬را ارﺗﻘﺎء دھﯿﻢ‪ ،‬ﺑﺮﻧﺎﻣﮫ زﯾﺮ را در ﻧﻈﺮ ﺑﮕﯿﺮﯾﺪ‪:‬‬

‫در اﯾﻦ ﺑﺮﻧﺎﻣﮫ ﺳﮫ ﺳﺎزﻧﺪه ﺗﻌﺮﯾﻒ ﺷﺪه اﻧﺪ‪ .‬ﺳﮫ اﻋﻼن زﯾﺮ ھﺮ ﯾﮏ ﺳﺎزﻧﺪه ای را ﻓﺮاﺧﻮاﻧﯽ ﻣﯿﮑﻨﻨﺪ‪:‬‬
‫;)( ‪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‬‬
‫ﮐﻨﺘﺮل دﺳﺘﯿﺎﺑﯽ ﻋﻀﻮ‬
‫ھ ﺮ ﻋﻀ ﻮ ﯾ ﮏ ﮐ ﻼس )ﻓﯿﻠ ﺪ ﯾ ﺎ ﻣﺘ ﺪ( دارای ﯾ ﮏ ﺻ ﻔﺖ ﮐﻨﺘ ﺮل دﺳ ﺘﯿﺎﺑﯽ ﻣﯿﺒﺎﺷ ﺪ ﮐ ﮫ ﺷ ﯿﻮه ای ﮐ ﮫ ﻋﻀ ﻮ ﻣﯿﺘﻮاﻧ ﺪ ﻣ ﻮرد‬
‫دﺳ ﺘﯿﺎﺑﯽ ﻗ ﺮار ﮔﯿ ﺮد را ﺗﺤ ﺖ ﺗ ﺎﺛﯿﺮ ﻗ ﺮار ﻣﯿﺪھ ﺪ‪ .‬اﻋﻀ ﺎء ﮐ ﻼس ﻣﯿﺘﻮاﻧﻨ ﺪ ﺧﺼﻮﺻ ﯽ‪ ،‬ﻋﻤ ﻮﻣﯽ ﯾ ﺎ ﻣﺤﺎﻓﻈ ﺖ ﺷ ﺪه‬
‫ﺑﺎﺷ ﻨﺪ‪ .‬اﻋﻀ ﺎ ﺧﺼﻮﺻ ﯽ ﺗﻨﮭ ﺎ ﻣﯿﺘﻮاﻧﻨ ﺪ ﺑﻮﺳ ﯿﻠﮫ ﻣﺘ ﺪھﺎی ﮐﻼﺳ ﯽ ﮐ ﮫ در آن ﺗﻌﺮﯾ ﻒ ﺷ ﺪه اﻧ ﺪ ﻣ ﻮرد دﺳ ﺘﯿﺎﺑﯽ ﻗ ﺮار‬
‫ﮔﯿﺮﻧﺪ‪ .‬اﻣﺎ اﻋﻀﺎء ﻋﻤﻮﻣﯽ ﯾﮏ ﮐﻼس ﻣﯿﺘﻮاﻧﻨﺪ ﺑﻮﺳﯿﻠﮫ ﻣﺘﺪھﺎی ھﺮ ﮐﻼﺳﯽ ﻣﻮرد دﺳﺘﯿﺎﺑﯽ ﻗﺮار ﮔﯿﺮﻧﺪ‪.‬‬

‫در ﻋﻤ ﻞ‪ ،‬ﺑﺨ ﺶ ﻋﻤ ﻮﻣﯽ ﯾ ﮏ ﮐ ﻼس راﺑ ﻂ ﮐ ﻼس و ﺑﺨ ﺶ ﺧﺼﻮﺻ ﯽ ﯾ ﮏ ﮐ ﻼس ﭘﯿ ﺎده ﺳ ﺎزی ﮐ ﻼس را ﺑﺴ ﺘﮫ ﺑﻨ ﺪی‬


‫ﻣﯿﮑﻨ ﺪ‪ .‬ﺗﻮﺳ ﻂ ﺧﺼﻮﺻ ﯽ ﺳ ﺎﺧﺘﻦ ﭘﯿ ﺎده ﺳ ﺎزی ﯾ ﮏ ﮐ ﻼس ﻣﻄﻤ ﺌﻦ ﻣﯿﺸ ﻮﯾﻢ ﮐ ﮫ ﮐ ﺪی ﮐ ﮫ ﮐ ﻼس را ﻣ ﻮرد اﺳ ﺘﻔﺎده ﻗ ﺮار‬
‫ﻣﯿﺪھ ﺪ ﻓﻘ ﻂ واﺑﺴ ﺘﮫ ﺑ ﮫ راﺑ ﻂ ﮐ ﻼس اﺳ ﺖ و ﻧ ﮫ ﭘﯿ ﺎده ﺳ ﺎزی ﮐ ﻼس‪ .‬ﺑﻨ ﺎﺑﺮاﯾﻦ ﻣﯿﺘ ﻮاﻧﯿﻢ ﭘﯿ ﺎده ﺳ ﺎزی ﯾ ﮏ ﮐ ﻼس را‬
‫ﺑ ﺪون اﯾﻨﮑ ﮫ ﮐ ﺪ ﻣﺸ ﺘﺮی ﮐ ﻼس را ﺗﺤ ﺖ ﺗ ﺎﺛﯿﺮ ﻗ ﺮار دھ ﺪ اﺻ ﻼح و ﯾ ﺎ ﺗﻘﯿﯿ ﺮ دھ ﯿﻢ‪ .‬اﻋﻀ ﺎی ﻣﺤﺎﻓﻈ ﺖ ﺷ ﺪه ﺷ ﺒﯿﮫ‬
‫اﻋﻀ ﺎء ﺧﺼﻮﺻ ﯽ ﻣﯿﺒﺎﺷ ﻨﺪ‪ ،‬ﺑ ﮫ ﻋﺒ ﺎرﺗﯽ ﻋﻀ ﻮھﺎی ﻣﺤﺎﻓﻈ ﺖ ﺷ ﺪه ﻣﯿﺘﻮاﻧﻨ ﺪ ﺑﻮﺳ ﯿﻠﮫ ﻣﺘ ﺪھﺎی ﮐﻼﺳ ﯽ ﮐ ﮫ در آن‬
‫ﺗﻌﺮﯾ ﻒ ﺷ ﺪه اﻧ ﺪ و ھﻤﭽﻨ ﯿﻦ ﺑﻮﺳ ﯿﻠﮫ ﻣﺘ ﺪھﺎی ﺗﻤ ﺎم ﮐﻼﺳ ﮭﺎی ﻣﺸ ﺘﻖ ﺷ ﺪه از ﮐﻼﺳ ﯽ ﮐ ﮫ ﻋﻀ ﻮھﺎ در آن اﻋ ﻼن ﺷ ﺪه اﻧ ﺪ‬
‫ﻣﻮرد دﺳﺘﯿﺎﺑﯽ ﻗﺮار ﮔﯿﺮﻧﺪ‪.‬‬

‫ﺟ ﺎوا ﻧﻈﺮﯾ ﮫ ﭘﮑ ﯿﺞ را ﻣﻌﺮﻓ ﯽ ﻣﯿﮑﻨ ﺪ‪ .‬ﺑﺮرﺳ ﯽ ﭘﮑ ﯿﺞ از ﺣﻮﺻ ﻠﮫ اﯾ ﻦ ﺑﺤ ﺚ ﺧ ﺎرج اﺳ ﺖ‪ ،‬اﻣ ﺎ ﺑﯿ ﺎد داﺷ ﺘﮫ ﺑﺎﺷ ﯿﺪ ﮐ ﮫ‬
‫ﭘﮑﯿﺞ ﮐﻠﮑﺴﯿﻮﻧﯽ از ﮐﻼﺳﮭﺎی ﻣﺮﺗﺒﻂ ﻣﯿﺒﺎﺷﺪ‪.‬‬

‫ﮐﻼﺳﮭﺎی ﺗﻮ در ﺗﻮ‬
‫در ﺟ ﺎوا ﻣﯿﺘ ﻮان ﯾ ﮏ ﮐ ﻼس را در درون ﮐﻼﺳ ﯽ دﯾﮕ ﺮ ﺗﻌﺮﯾ ﻒ ﮐ ﺮد‪ .‬ﮐﻼﺳ ﯽ ﮐ ﮫ در داﺧ ﻞ ﮐ ﻼس دﯾﮕ ﺮ ﺗﻌﺮﯾ ﻒ‬
‫ﻣﯿﺸﻮد را ﮐﻼس دروﻧﯽ ﻣﯿﻨﺎﻣﯿﻢ‪ .‬ﺟﺎوا دو ﻧﻮع ﮐﻼس ﺗﻮ در ﺗﻮ را اراﺋﮫ ﻣﯿﮑﻨﺪ‪ :‬اﺳﺘﺎﺗﯿﮑﯽ و ﻏﯿﺮ اﺳﺘﺎﺗﯿﮑﯽ‪.‬‬

‫ﻗﻄﻌﮫ ﮐﺪ زﯾﺮ را در ﻧﻈﺮ ﺑﮕﯿﺮﯾﺪ‪:‬‬


‫‪public class A‬‬
‫{‬
‫;‪int y‬‬

‫‪public static class B‬‬


‫{‬
‫;‪int x‬‬

‫}{ )( ‪void f‬‬


‫}‬
‫}‬
‫اﯾ ﻦ ﻗﻄﻌ ﮫ ﮐ ﻼس ‪ A‬را ﺗﻌﺮﯾ ﻒ ﻣﯿﮑﻨ ﺪ ﮐ ﮫ ﺷ ﺎﻣﻞ ﯾ ﮏ ﮐ ﻼس اﺳ ﺘﺎﺗﯿﮑﯽ دروﻧ ﯽ ‪ B‬ﻣﯿﺒﺎﺷ ﺪ‪ .‬ﯾ ﮏ ﮐ ﻼس اﺳ ﺘﺎﺗﯿﮑﯽ‬
‫دروﻧ ﯽ ھﻤﺎﻧﻨ ﺪ ﯾ ﮏ ﮐ ﻼس ﺑﯿﺮوﻧ ﯽ ﻋﻤ ﻞ ﻣﯿﮑﻨ ﺪ‪ ،‬ﻣﯿﺘﻮاﻧ ﺪ ﺷ ﺎﻣﻞ ﻣﺘ ﺪھﺎ و ﻓﯿﻠ ﺪھﺎ ﺑﺎﺷ ﺪ‪ ،‬ھﻤﭽﻨ ﯿﻦ ﻣﯿﺘ ﻮان از آن ﻧﻤﻮﻧ ﮫ‬
‫)ﺷﯽ( ﺳﺎﺧﺖ‪:‬‬
‫;)( ‪A.B object = new A.B‬‬
‫اﯾﻦ دﺳﺘﻮر ﯾﮏ ﻧﻤﻮﻧﮫ ﺟﺪﯾﺪ از ﮐﻼس دروﻧﯽ ‪ B‬ﻣﯿﺴﺎزد‪ ،‬ﺑﻨﺎﺑﺮاﯾﻦ ﻣﯿﺘﻮاﻧﯿﻢ ﻣﺘﺪ ‪ f‬را ﺑﮫ ﺷﯿﻮه ﻣﻌﻤﻮل ﻓﺮا ﺑﺨﻮاﻧﯿﻢ‪:‬‬

‫;)(‪object.f‬‬

‫‪25‬‬
‫ﻧﻤﻮﻧ ﮫ ﺳ ﺎزی از ﮐ ﻼس ﺑﯿﺮوﻧ ﯽ ‪ A‬ﻣﻮﺟ ﺐ ﻧﻤﻮﻧ ﮫ ﺳ ﺎزی از ﮐ ﻼس دروﻧ ﯽ ‪ B‬ﻧﻤﯿﺸ ﻮد‪ .‬ﻣﺘ ﺪھﺎی ﮐ ﻼس اﺳ ﺘﺎﺗﯿﮑﯽ‬
‫دروﻧ ﯽ ﻣﯿﺘﻮاﻧﻨ ﺪ ﺗﻤ ﺎم اﻋﻀ ﺎء )ﻓﯿﻠ ﺪھﺎ و ﻣﺘ ﺪھﺎ( ﮐ ﻼس دروﻧ ﯽ را دﺳ ﺘﯿﺎﺑﯽ ﻧﻤﺎﯾﻨ ﺪ‪ ،‬اﻣ ﺎ ﺗﻨﮭ ﺎ ﻣﯿﺘﻮاﻧﻨ ﺪ ﺑ ﮫ اﻋﻀ ﺎء‬
‫)ﻓﯿﻠ ﺪھﺎ و ﻣﺘ ﺪھﺎ( اﺳ ﺘﺎﺗﯿﮑﯽ ﮐ ﻼس ﺧ ﺎرﺟﯽ دﺳﺘﺮﺳ ﯽ داﺷ ﺘﮫ ﺑﺎﺷ ﻨﺪ‪ .‬ازاﯾﻨ ﺮو ‪ f‬ﻣﯿﺘﻮاﻧ ﺪ ﻓﯿﻠ ﺪ ‪ x‬را دﺳ ﺘﯿﺎﺑﯽ ﮐﻨ ﺪ اﻣ ﺎ‬
‫ﻧﻤﯿﺘﻮاﻧﺪ ﻓﯿﻠﺪ ‪ y‬را دﺳﺘﯿﺎﺑﯽ ﮐﻨﺪ‪.‬‬

‫ﺑﮫ ﺻﻮرت ﭘﯿﺸﻔﺮض ﯾﮏ ﮐﻼس دروﻧﯽ ﻏﯿﺮ اﺳﺘﺎﺗﯿﮑﯽ ﻣﯿﺒﺎﺷﺪ‪:‬‬


‫‪public class A‬‬
‫{‬
‫;‪int y‬‬

‫‪public class B‬‬


‫{‬
‫;‪int x‬‬

‫}{ )( ‪void f‬‬


‫}‬
‫}‬

‫اﯾ ﻦ ﻗﻄﻌ ﮫ ﮐ ﻼس ‪ 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‬ﮐ ﮫ ﯾ ﮏ ﻣﮑ ﺎن‬
‫در ﻧﻘﺸﮫ را ﻧﺸﺎن ﻣﯿﺪھﺪ در زﯾﺮ آﻣﺪه اﺳﺖ‪:‬‬

‫ﻣﺘﺪھﺎی اﻧﺘﺰاﻋﯽ و ﮐﻼﺳﮭﺎی اﻧﺘﺰاﻋﯽ‬


‫ﮐ ﻼس ‪ GraphicalObject‬در زﯾ ﺮ ﺗﻌﺮﯾ ﻒ ﺷ ﺪه اﺳ ﺖ‪ .‬اﯾ ﻦ ﮐ ﻼس راﺑ ﻂ ‪ GraphicsPrimitives‬را ﭘﯿ ﺎده ﺳ ﺎزی‬
‫ﻣﯿﮑﻨ ﺪ‪ .‬ﮐ ﻼس ‪ GraphicalObject‬دارای ﺗﻨﮭ ﺎ ﯾ ﮏ ﻓﯿﻠ ﺪ ‪ center‬از ﻧ ﻮع ﮐ ﻼس ‪ point‬ﺟﮭ ﺖ اراﺋ ﮫ ﻣﻮﻗﻌﯿ ﺖ‬
‫ﻣﺮﮐ ﺰی ﺷ ﯽ ﮔﺮاﻓﯿﮑ ﯽ در ﻃﺮاﺣ ﯽ ﻣﯿﺒﺎﺷ ﺪ‪ .‬ﺳ ﺎزﻧﺪه ﮐ ﻼس آرﮔﻮﻣ ﺎﻧﯽ از ﻧ ﻮع ‪ point‬درﯾﺎﻓ ﺖ ﻣﯿ ﺪارد و ﺳ ﭙﺲ ﻓﯿﻠ ﺪ‬
‫‪ center‬را ﻣﻘﺪاردی اوﻟﯿﮫ ﻣﯿﮑﻨﺪ‪.‬‬

‫‪29‬‬
‫ﺑﺮﻧﺎﻣ ﮫ ﻓ ﻮق ﭘﯿ ﺎده ﺳ ﺎزی ﻣﻤﮑ ﻦ ﺑ ﺮای ﻣﺘ ﺪ ‪ erase‬را ﻧﺸ ﺎن ﻣﯿﺪھ ﺪ‪ :‬ﻓ ﺮض ﻣﯿﮑﻨ ﯿﻢ ﺗﺼ ﻮﯾﺮ ﺑ ﺎ اﺳ ﺘﻔﺎده از ﯾ ﮏ ﻣ ﺪاد‬
‫ﺧﯿ ﺎﻟﯽ ﻃﺮاﺣ ﯽ ﻣﯿﺸ ﻮد‪ ،‬ھﻤﭽﻨ ﯿﻦ ﻓ ﺮض ﻣﯿﮑﻨ ﯿﻢ ﮐ ﮫ از ﭼﮕ ﻮﻧﮕﯽ ﻃﺮاﺣ ﯽ ﯾ ﮏ ﺷ ﯽ ﮔﺮاﻓﯿﮑ ﯽ آﮔ ﺎھﯿﻢ‪ .‬ﺣ ﺎل ﻣﯿﺘ ﻮاﻧﯿﻢ‬
‫ﺷﯽ را ﺑﺎ ﺗﻘﯿﯿﺮ رﻧﮓ ﻣﺪاد ﺗﺎ ھﻤﺮﻧﮓ رﻧﮓ ﭘﺲ زﻣﯿﻨﮫ ﺷﻮد ﭘﺎک ﮐﻨﯿﻢ و ﺳﭙﺲ ﺷﯽ را دوﺑﺎره ﻃﺮاﺣﯽ ﻣﯿﮑﻨﯿﻢ‪.‬‬

‫ھﻨﮕﺎﻣﯿﮑ ﮫ ﻣﯿﺘ ﻮاﻧﯿﻢ ﺷ ﯽ را ﭘ ﺎک ﮐﻨ ﯿﻢ و ھﻤﭽﻨ ﯿﻦ ﻃﺮاﺣ ﯽ ﮐﻨ ﯿﻢ‪ ،‬ﭘ ﺲ ﺣﺮﮐ ﺖ آن ﺳ ﺎده اﺳ ﺖ‪ .‬ﻓﻘ ﻂ ﮐﺎﻓﯿﺴ ﺖ ﺷ ﯽ را‬
‫ﭘ ﺎک ﮐﻨ ﯿﻢ‪ ،‬ﻧﻘﻄ ﮫ ﻣﺮﮐ ﺰی را ﺗﻘﯿﯿ ﺮ دھ ﯿﻢ و ﺳ ﭙﺲ دوﺑ ﺎره ﺷ ﯽ را ﻃﺮاﺣ ﯽ ﮐﻨ ﯿﻢ‪ .‬اﯾ ﻦ ﻃﺮﯾﻘ ﮫ ﭘﯿ ﺎده ﺳ ﺎزی ﻣﺘ ﺪ‬
‫‪ moveTo‬اﺳﺖ ﮐﮫ در ﺑﺮﻧﺎﻣﮫ ﻣﺸﺨﺺ ﺷﺪه اﺳﺖ‪.‬‬

‫ﻣﺸ ﺎھﺪه ﻣﯿﺸ ﻮد ﮐ ﮫ ﮐ ﻼس ‪ GraphicalObject‬ﭘﯿ ﺎده ﺳ ﺎزی ‪ erase‬و ‪ moveTo‬را ﻧﺸ ﺎن ﻣﯿﺪھ ﺪ‪ ،‬اﻣ ﺎ ﭘﯿ ﺎده ﺳ ﺎزی‬
‫ﺑ ﺮای ﻣﺘ ﺪ ‪ draw‬اراﺋ ﮫ ﻧﺸ ﺪه اﺳ ﺖ‪ .‬ازاﯾﻨ ﺮو ﻣﺘ ﺪ ‪ draw‬ﺑ ﮫ ﺻ ﻮرت ‪ abstract‬اﻋ ﻼن ﺷ ﺪه اﺳ ﺖ‪ .‬ﺑﻨ ﺎﺑﺮاﯾﻦ ﻣ ﺎ‬
‫ﻣﯿﺪاﻧﯿﻢ ﮐﮫ اﯾﻦ ﻣﺘﺪ ﭼﮫ ﻧﻮع ﺷﯽ را ﻃﺮاﺣﯽ ﻣﯿﮑﻨﺪ اﻣﺎ از ﭼﮕﻮﻧﮕﯽ ﻃﺮاﺣﯽ اﻃﻼﻋﯽ ﻧﺪارﯾﻢ‪.‬‬

‫ﮐ ﻼس ‪ circle‬در زﯾ ﺮ آﻣ ﺪه اﺳ ﺖ‪ circle .‬ﮐ ﻼس ‪ GraphicalObject‬را ﺗﻮﺳ ﻌﮫ ﻣﯿﺪھ ﺪ ﺑﻨ ﺎﺑﺮاﯾﻦ ﻓﯿﻠ ﺪ ‪ center‬و‬


‫ﻣﺘ ﺪھﺎی ‪ erase‬و ‪ moveTo‬را ﺑ ﮫ ارث ﻣﯿﺒ ﺮد‪ .‬ﺑﺪﻧ ﮫ ﻣﺘ ﺪ ‪ draw‬ﻧﺸ ﺎن داده ﻧﺸ ﺪه اﺳ ﺖ‪ ،‬اﻣ ﺎ ﻣﯿﺘ ﻮاﻧﯿﻢ ﺗﺼ ﻮر ﮐﻨ ﯿﻢ‬
‫ﮐﮫ اﯾﻦ ﻣﺘﺪ داﯾﺮه ای ﺑﺎ ﺷﻌﺎع داده ﺷﺪه و ﻣﺮﮐﺰ ﻣﺸﺨﺺ را ﻃﺮاﺣﯽ ﻣﯿﮑﻨﺪ‪.‬‬

‫‪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‬ﻧﻘﻞ ﻣﮑﺎن ﻣﯿﮑﻨﺪ و دراﻧﺘﮭﺎ ﭘﺎک ﻣﯿﺸﻮد‪.‬‬

‫در زﯾ ﺮ ﮐ ﻼس ‪ Rectangle‬و ‪ square‬آﻣ ﺪه اﺳ ﺖ‪ .‬در ﮐ ﻼس ‪ Rectangle‬ﺑﺪﻧ ﮫ ای ﺑ ﺮای ﻣﺘ ﺪ ‪ draw‬ﻣﺸ ﺨﺺ‬


‫ﻧﺸ ﺪه اﺳ ﺖ‪ ،‬اﻣ ﺎ ﻣﯿﺘ ﻮان ﺗﺼ ﻮر ﮐ ﺮد ﮐ ﮫ اﯾ ﻦ ﻣﺘ ﺪ ﻣﺴ ﺘﻄﯿﻠﯽ ﺑ ﺎ اﺑﻌ ﺎد داده ﺷ ﺪه و ﻧﻘﻄ ﮫ ﻣﺮﮐ ﺰی ﻣﺸ ﺨﺺ ﻃﺮاﺣ ﯽ‬
‫ﻣﯿﮑﻨﺪ‪.‬‬

‫‪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‬ﺗﻌﺮﯾ ﻒ ﻣﯿﺸ ﻮﻧﺪ‪ .‬ﺣ ﺎل ﺳ ﻌﯽ‬
‫ﮐﻨﯿﺪ ﮐﮫ ﻣﻨﻄﻖ ﺑﺮﻧﺎﻣﮫ را ﮐﺸﻒ ﮐﻨﯿﺪ‪.‬‬

‫‪And dedicated to whom is a pleasure to work.‬‬

‫‪Hojat ahmadian‬‬
‫‪34‬‬

You might also like