مهندس علی رضوانی مقدم در
Download
Report
Transcript مهندس علی رضوانی مقدم در
دانشگاه علمی کاربردی
جهاد دانشگاهی مشهد
Introduction to Java
فصل 1
مهندس علی رضوانی مقدم
بهار92
سرفصلهاي يادگيري هر زبان برنامه نويس ي عبارتند از
قالب كلي زبان
قالب كلي دستورات
انواع داده ها
تعريف متغير و نحوه انتساب و قوانين نامگذاري
دستورات شرطي و كنترلي
دستورات تكرار
ساختمان داده ها (آرايه ها ،رشته ها و)...
نحوه كار با فايلها
نحوه نوشتن توابع
و....
1
دسته بندي زبانهاي از لحاظ نزديكي به سخت افزار:
سطح پايين مانند اسمبلي
سطح ميانه مانند C,C++
سطح باال مانند .net،Delphi،Pascal،Java
دسته بندي به لحاظ ساخت يافتگي –ش ي گرا:
ساخت يافته Pascal،C
ساخت يافته-ش ي گرا .net،Delphi،JAVA،C++
غيرساخت يافته qbasic
2
چرا فنجان قهوه؟
Any Where
Every Where
Java Is There
3
تاریخچه جاوا
Sun Microsystems
در آغاز تبدیل شدن به بزرگترین ایستگاههای کاری Unix
عالقمند در زمینه بازار لوازم الکترونیکی
پیدایش Green
شکست پروژه گرین و استقبال نشدن از این پروژه
آغاز به کار در سال 1994توسط جیمزگوسلینگ
هدف اجرای برنامه ها در بسترهای سخت افزاری مختلف
نارسایی C++در این زمینه
OAK ساخته شده از ویرانه یک پروژه کامال شکست خورده
تغیير نام OAKبه (Jsut Another Vague Acronym) Java
4
جیمز گوسلینگ پدید آورنده جاوا
اهداف اصلي در زمان پياده سازي جاوا
از متدولوژي ش يءگرايي در اين زبان بطور كامل استفاده شود.
قابليت اجراي برنامه هاي يكسان در سيستم عامل هاي مختلف
پشتيباني از ويژگي هاي شبكه هاي كامپيوتري
اجراي راه دور برنامه ها بصورت كامال امن
كاربرد راحت و ساده زبان به كمك انتخاب اجزاء مفيد
ساير زبانهاي ش يءگرا و استفاده از آن در جاوا (الگوبرداري)
5
خصوصیات زبان برنامه نويس ي جاوا
6
ساده)(simple
ﺟﺎوا ﻃﻮری ﺷﺪه ﮐﻪ ﺑﺮﻧﺎﻣﻪ ﻧﻮﯾﺴﺎن ﺣﺮﻓﻪ ای ﺑﺴﺎدﮔﯽ آن را ﻓﺮاﮔﺮﻓﺘﻪ و ﺑﻄﻮر ﻣﻮﺛﺮی
ﺑﮑﺎر ﻣﯽ ﺑﺮﻧﺪ .
ﺟـﺎوا دﺳـﺘﻮر زﺑـﺎن CوC ++وﻫﻤﭽﻨﯿﻦ ﺑﺴﯿﺎری از ﺟﻮاﻧﺐ ﺷﯽ ئ ﮔﺮاﯾﯽ C ++را ﺑﺎرث
ﺑﺮده ،اﮐﺜﺮ ﺑﺮﻧﺎﻣﻪ ﻧﻮﯾﺴﺎن ﺑﺮای ﮐـﺎر ﺑـﺎ ﺟـﺎوا دﭼـﺎر ﻣﺸـﮑﻞ ﻧﺨﻮاﻫﻨﺪ ﺷﺪ .
ﺟﺎوا ﺗﻼش ﮐﺮده ﮐﻪ ﺟﻨﺒﻪ ﻫﺎی اﺳـﺘﺜﻨﺎﯾﯽ و ﺧـﺎرق اﻟﻌـﺎده ﻧﺪاﺷـﺘﻪ ﺑﺎﺷـﺪ .در
ﺟﺎوا ،ﺗﻌﺪاد اﻧﺪﮐﯽ از ﺷﯿﻮه ﻫﺎی ﮐﺎﻣﻼ" ﺗﻮﺻﯿﻒ ﺷﺪه ﺑﺮای اﻧﺠﺎم ﯾﮏ وﻇﯿﻔﻪ وﺟﻮد
دارد .
7
ﺷﯽ ئ ﮔﺮا
ﺟـ ـﺎوا از ﺑﺴـ ـﯿﺎری از ﻣﺤـ ـﯿﻂ ﻫـ ـﺎی ﻧـ ـﺮم اﻓـ ـﺰاری اوﻟﯿـ ـﻪﺑﺮاﺳـ ـﺎس
اشیاء مواردی را به ﻋﺎرﯾﺖ ﮔﺮﻓﺘﻪ و ﺗﻮازﻧﯽ ﺑﯿﻦ ﻧﻈﺮﯾﻪ ﻟﻔﻆ ﻗﻠﻤﯽ ﺗﺤﺖ ﻋﻨﻮان " ﻫﺮ ﭼﯿﺰی ﯾﮏ
ﺷﯽ .اﺳـﺖ " و ﻧﻈﺮﯾـﻪ واﻗﻌﯿـﺖﮔﺮاﯾﯽ " ﺟﻠﻮی راه ﻣﻦ ﻗﺮار ﻧﮕﯿﺮ " ﺑﻮﺟﻮد آورده اﺳﺖ .ﻣﺪل ﺷﯽ
ئ در ﺟﺎوا ﺑﺴﯿﺎر ﺳﺎده و ﺑﺮاﺣﺘﯽ ﻗﺎﺑﻞ ﮔﺴـﺘﺮش اﺳـﺖ
در ﺣﺎﻟﯿﮑﻪ اﻧﻮاع ﺳﺎده آن ﻧﻈﯿﺮ اﻋﺪاد ﺻﺤﯿﺢ ) (integersﺑﻌﻨـﻮان ﻋﻤﻠﮑﺮدﻫـﺎی ﺳـﻄﺢ
ﺑـﺎﻻی ﻏﯿـﺮ ﺷـﯽ ئ ﺗﻠﻘـﯽ میشوند.
8
قدرتمند)(Robust
ﺗﻮاﻧـﺎﯾﯽ اﯾﺠـﺎد ﺑﺮﻧﺎﻣـﻪ ﻫـﺎی ﻗﺪرﺗﻤﻨـﺪ
ﺟﺎوا ﺷﻤﺎ را ﺑﻪ ﺗﻌﺪاد ﻣﺤﺪودی از ﻧﻮاﺣﯽ ﮐﻠﯿﺪی ﻣﺤﺪود ﻣﯽ ﮐﻨﺪ
ﺗﺎ ﻣﺠﺒﻮر ﺷـﻮﯾﺪ اﺷـﺘﺒﺎﻫﺎتﺧﻮد را در ﺗﻮﺳﻌﻪ ﺑﺮﻧﺎﻣﻪ ﺧﯿﻠﯽ زود پیداﮐﻨﯿﺪ .
ﺟﺎوا ﺷﻤﺎ را از ﻧﮕﺮاﻧـﯽ درﺑـﺎره ﺑﺴـﯿﺎری از اﺷـﺘﺒﺎﻫﺎت راﯾـﺞﻧﺎﺷﯽ از ﺧﻄﺎﻫﺎی ﺑﺮﻧﺎﻣﻪ ﻧﻮﯾﺴﯽ ﻣﯽ رﻫﺎﻧﺪ
ﺟﺎوا ﯾﮏ زﺑﺎن ﮐﺎﻣﻼ" ﻧﻮع ﺑﻨﺪی ﺷﺪه اﺳﺖ ،ﻫﻨﮕﺎم ﮐﺎﻣﭙﺎﯾﻞ ﮐـﺪ ﺷﻤﺎ را ﮐﻨﺘﺮل ﻣﯽ ﮐﻨﺪ .اﻣﺎ اﯾﻦ زﺑﺎن ﮐﺪﻫﺎی
ﺷﻤﺎ را ﻫﻨﮕﺎم اﺟﺮا ﻧﯿﺰ ﮐﻨﺘﺮل ﻣﯽ ﻧﻤﺎﯾـﺪ
در ﯾﮏ ﺑﺮﻧﺎﻣﻪ ﺧﻮش ﺳﺎﺧﺖ ﺟﺎوا ،ﮐﻠﯿﻪ ﺧﻄﺎﻫﺎی ﻫﻨﮕﺎم اﺟﺮا ﺗﻮﺳﻂ ﺑﺮﻧﺎﻣﻪ ﺷﻤﺎ ﻣﺪﯾﺮﯾﺖ خواهد شد
9
ﭼﻨﺪ ﻧﺦ ﮐﺸﯽ ﺷﺪه)(Multi threaded
ﺑﺮﻧﺎﻣﻪ ﻧﻮﯾﺴﯽ ﭼﻨﺪﻧﺦ ﮐﺸـﯽ اﻣﮑـﺎن
ﻧﻮﺷـﺘﻦ ﺑﺮﻧﺎﻣﻪ ﻫﺎﯾﯽ ﺑﻪ ﺷﻤﺎ ﻣﯿﺪﻫﺪ ﮐﻪ در
آن واﺣﺪ ﭼﻨﺪﯾﻦ ﮐﺎر را اﻧﺠﺎم ﻣﯽ دﻫﻨـﺪ .
ﺳﯿﺴـﺘﻢ ﺣـﯿﻦ اﺟـﺮای ﺟـﺎوا ،ﯾـﮏ راه ﺣـﻞ
زﯾﺒـــﺎ و ﺑﺴـــﯿﺎر ﻣﺎﻫﺮاﻧـــﻪ ﺑـــﺮای
ﻫﻤﺰﻣـــﺎﻧﯽ ﭼﻨـــﺪﯾﻦ ﭘـــﺮدازش اراﺋـــﻪ
ﻣـــﯽ دﻫـــﺪ.
10
ﻣﻌﻤﺎری ﺧﻨﺜﯽ Architecture-Neutral
ﯾﮑﯽ از ﻣﺸﮑﻼت اﺻﻠﯽ ﺳﺮ راه ﺑﺮﻧﺎﻣﻪﻧﻮﯾﺴﺎن اﯾﻦ اﺳﺖ ﮐﻪ ﺗﻀﻤﯿﻨﯽ وﺟﻮد ﻧﺪارد ﺗﺎ ﺑﺮﻧﺎﻣﻪ ای را
ﮐﻪ اﻣﺮوز ﻣﯽ ﻧﻮﯾﺴﯿﺪ ﻓﺮدا ﺣﺘﯽ روی ﻫﻤﺎن ﻣﺎﺷـﯿﻦ اﺟـﺮا ﺷـﻮد.
ارﺗﻘﺎئ ﺳﯿﺴﺘﻢ ﻫﺎی ﻋﺎﻣﻞ و ﭘﺮدازﻧﺪه ﻫﺎ و ﺗﻐﯿﯿﺮات در ﻣﻨﺎﺑﻊ ﻫﺴﺘﻪ ای ﺳﯿﺴﺘﻢ ﻣﻤﮑﻦ اﺳﺖ
دﺳﺖ ﺑﺪﺳﺖ ﻫـﻢ داده ﺗـﺎ ﯾـﮏﺑﺮﻧﺎﻣﻪ را از ﮐﺎر ﺑﯿﻨﺪازﻧﺪ .ﻃﺮاﺣﺎن ﺟﺎوا ﺗﺼﻤﯿﻤﺎت ﻣﺘﻌﺪد و
دﺷﻮاری در ﺟﺎوا و ﺣﯿﻦ اﺟـﺮا اﺗﺨـﺎذ ﻧﻤﻮدﻧـﺪ ﺗـﺎ ﺑﺘﻮاﻧﻨـﺪ اﯾـﻦ
ﻣﻮﻗﻌﯿﺖ را دﮔﺮﮔﻮن ﻧﻤﺎﯾﻨﺪ .ﻫﺪف آﻧﻬﺎ ﻋﺒﺎرت ﺑﻮد از :ﯾﮑﺒﺎر ﺑﻨﻮﯾﺴﯿﺪ ،ﻫﺮ ﺟﺎﯾﯽ ،ﻫﺮ زﻣﺎن و
ﺑﺮای ﻫﻤﯿﺸﻪ اﺟـﺮا ﮐﻨﯿـﺪ .
12
11
ﺗﻔﺴﯿﺮ ﺷﺪه و ﻋﻤﻠﮑﺮد ﺳﻄﺢ ﺑﺎﻻ
ﺟﺎوا ﻗﺪرت اﯾﺠﺎد ﺑﺮﻧﺎﻣﻪ ﻫﺎﯾﯽ ﻗﺎﺑﻞ اﻧﻄﺒﺎق ﺑـﺎ ﭼﻨـﺪﯾﻦ ﻣﺤـﯿﻂ را ﺑﻮﺳـﯿﻠﻪ ﮐﺎﻣﭙﺎﯾـﻞ ﮐـﺮدن ﯾـﮏ ﻧـﻮع
ﻣﻌﺮﻓﯽ واﺳﻄﻪ ﺗﺤﺖ ﻋﻨﻮان ﮐﺪ ﺑﺎﯾﺘﯽ ﭘﯿﺪا ﮐﺮده اﺳﺖ .
ﺟﺎوا ﻃﻮری ﻃﺮاﺣﯽ ﺷﺪه ﺗﺎ روی اﻧﻮاع cpuﻧﯿـﺰ ﺑﺨـﻮﺑﯽ اﺟـﺮا ﺷـﻮد .ﮐﺪﻫﺎی ﺑﺎﯾﺘﯽ ﺟﺎوا آﻧﭽﻨﺎن دﻗﯿﻖ ﻃﺮاﺣﯽ
ﺷﺪه ﮐﻪ ﻣﯽ ﺗـﻮان آﻧﻬـﺎ را ﺑﺴـﺎدﮔﯽ وﺑﻄﻮر ﻣﺴﺘﻘﯿﻢ ﺑﻪ ﮐﺪﻫﺎی ﻣﺎﺷﯿﻦ ﺧﺎص ﺷﻤﺎ ﺑﺮای ﻋﻤﻠﮑﺮدﻫﺎی ﺳﻄﺢ ﺑﺎﻻ
ﺗﺮﺟﻤﻪ ﻧﻤﻮد .
12
ﺗﻮزﯾﻊ ﺷﺪه)(Distributed
ﺟﺎوا ﻣﺨﺘﺺ ﻣﺤﯿﻂ ﺗﻮزﯾﻊ ﺷﺪه اﯾﻨﺘﺮﻧﺖ ﻃﺮاﺣﯽ ﺷﺪه.
رواﯾﺖ اوﻟﯿﻪ ﺟـﺎوا ﯾﻌﻨـﯽ oakدرﺑﺮﮔﯿﺮﻧﺪه ﺟﻨﺒﻪ ﻫﺎﯾﯽ
ﺑﺮای ﭘﯿﺎم رﺳﺎﻧﯽ آدرﺳﻬﺎی داﺧﻠﯽ ﻓﻀﺎی اﻟﮑﺘﺮوﻧﯿﮑﯽ ﺑﻮد .
ﺟﺎوا اﺧﯿﺮا"اﯾﻦ راﺑﻄﻬﺎ را در ﯾﮏ ﺑﺴـﺘﻪ ﻧـﺮم اﻓـﺰاری ﺑﻨـﺎم
(RMI) Remote Method Invocationاﺣﯿﺎئ ﻧﻤﻮده اﺳﺖ .اﯾﻦ ﺟﻨﺒﻪ ﯾﮏ ﺳﻄﺢ
ﻏﯿﺮ ﻣﻮازی از ﺗﺠﺮد ﺑـﺮای ﺑﺮﻧﺎﻣﻪ ﻧﻮﯾﺲ ﺳﺮوﯾﺲ ﮔﯿﺮﻧﺪه /ﺳﺮوﯾﺲ دﻫﻨﺪه ﺑﻮﺟﻮد آورده اﺳﺖ .
13
پویا)(Dynamic
جاوا یک زبان پویا است .هر کالس جاوا میتواند در هر زمانی روی مفسر جاوا بارگذاری شود .
سپس این کالس های بارگذاری شده ی پویا میتوانند به صورت پویا معرفی شوند .شما میتوانید به
طور پویا در مورد یک کالس در زمان اجرا اطالعاتی بدست بیاورید .با وجود بازتاب APIاضافه
شده ( ) ApplicationProgram Interfaceکه به برنامه ساز امکان میدهد که با برنامه از
طریق یک برنامه کاربردی دیگر ارتباط برقرار کند.
14
Class File
Java Api
Byte Code
15
فرايند توليد نرم افزار
برنامه ها ابتدا در يك محيط ويراستاري متني نوشته مي شود و با پسوند .javaذخيره مي
گردد .سپس اين فايل بوسيله كامپايلر جاوا ترجمه و به فايلي با پسوند .classتبديل مي
گردد.
16
17
الیه های امنیتی جاوا
سیستم امنیتی جاوا از پنج قسمت تشکیل شده است:
کامپایلر آن تضمين می کند که قوانين امنیتی را زیرپا نمی گذارد
نظارت و کنترل بایت کدها
Verifier
بارکننده کالس ها ) (Class Loaderبررس ی می کند که
کالس ها به محدودیت ها دسترس ی نداشته باشند
باز پس گرفتن فضا توسط )Garbage Collector( Gc
18
نقاط ضعف جاوا
سرعت اجرای بسیار پایين به دلیل بایت کدها
نادیده گرفتن برخی از اصول ش ی گرایی به دلیل بازاریابی بهتر و انعطاف بیشتر
حذف اشاره گرها و وراثت چندگانه
عدم توانایی در استفاده از توابع سیستم عامل به دلیل مستقل از سکو بودن
19
پلتفرم های جاوا
:پلتفرم جاوا از دو مولفه تشكيل شده است
ماشين مجازي جاوا-1
API -2
انواع پلتفرمهاي جاوا
Java Platform, Standard Edition – Java SE
Java Platform, Enterprise Edition – Java EE
Java Platform, Micro Edition – Java ME
Java Card
20
ساختار یک برنامه ساده :
21
انواع داده ها در جاوا
22
داده ها در :C
23
متغيرها و انواع دادهها:
اکثرا نیاز به ذخيره مقدارها دارند که می خواهیم از آنها استفاده کنیم .برای
بازیابی یک مقدار باید آنرا در یک متغير نکهداری کنیم .یک متغیير محل ذخيره
در حافظه کامپیوتر است که ویژگیهایی مثل نام ،نوع ومحتویات دارد.
24
:تعريف متغيرها
: تعريف متغير از يك نوع و يك نام
int myAge
string myname;
boolean is tired
: چند متغير از يك نوع
int x,y,z
string firstname, lastname;
25
:مقداردهي به متغير درهنگام تعريف
int myAge, mysize, numshoes= 28;
string myname= “laura”;
boolean is Tired= true
18
ثابت ها
تعریف ثابت در جاوا کافی است که به ابتدای فرایند تعریف متغیير کلمه کلیدی finalرا اضافه کنیم
مانند مثال زیر
;Final String MANUFACTURER
مثال :
27
عملگر تخصیص مقدار
مقدار متغیير را میتوان با یک عالمت (=) تغیير داد .
1
اگر می خواهید که مقدار را عوض کنید به راحتی مقدار جدید بدهید
مانند مثال زیر :مقدار جدید بجای مقدار اصلی قرار می گيرد
2
اگر از یک متغیير که هیچ مقداری نداشته استفاده منید با خطا مواجه می شوید :
خطا مقدار دهی داده شده است.
28
نوع داده ای
مقدار پیش فرض
byte
۰
short
۰
int
۰
long
float
double
L۰
اندازه به بیت
bits in ۸
memory
bits in ۱۶
memory
bits in ۳۲
memory
64 bits in
memory
مقدار حداقل
مقدار حداکثر
کالس پوششی
۱۲۸-
۱۲۷+
Byte
۳۲۷۶۸-
۳۲۷۶۷+
Short
۲۱۴۷۴۸۳۶۴۸-
۲۱۴۷۴۸۳۶۴۷+
Integer
۹۲۲۳۳۷۲۰۳۶+
۹۲۲۳۳۷۲۰۳۶۸۵۴
۸۵۴۷۷۵۸۰۷
۷۷۵۸۰۸
Long
f ۰٫۰
32-bit IEEE
1.40129846432 ۳٫۴۰۲۸۲۳۴۶۶۳
754 floating
481707e-45 e+38 ۸۵۲۸۸۶۰
point
Float
d ۰٫۰
64-bit IEEE
۱٫۷۹۷۶۹۳۱۳۴۸
۴٫۹۴۰۶۵۶۴۵۸۴۱
754 floating
e+308۶۲۳۱۵۷۰
e-324d ۲۴۶۵۴۴
point
d
Double
char
‘\u0000′
boolean
false
16-bit,
unsigned
Unicode
character
1 bit
in memory
تعریف نشده
to 65,535 ۰
Char
تعریف نشده
Boolean
توضيحات در جاوا:
نوع اول :از * /شروع در خاتمه */قرار ميدهيم.
نوع دوم :براي توضيحات تك خطي از //استفاده ميكنيم.
نوع سوم :برنامه javadocاز آن استفاده ميكند با ** /شروع و در پايان */قرار
ميدهيم.
30
1.import java.aw.point
2.class Testpoint {
برنامهاي را مشاهده ميكنيد كه دستورات انتساب
.مقدار به يك ش ي و ايجاد يك ش ي را مشاهده كرد
3.public static void main (string args [ ] {
4.point the point= new point (10,10);
5.system.out.println (“Xis” + the point.x);
6.system.out.println (“y is” + thepoint)
7.system.out.println (“setting X to 5.”);
:خروجي
8.The point.X=5;
9.system.out.println (“setting Y to 15.”);
X
is
10
10.the point.y= 15;
Y
is
10
11.system.out.println (“x is” + the point.x);
Setting X to 5.
13.system.out.println (“Y is” + the point.y);
Setting Y to 15.
}
X
}
31
is
5
اعالن نمودن اشیاء
.1ابتدا باید یک متغير از نوع همان کالس اعالن نمائید .
.2یک کپی فيزیکی و واقعی از ش ٍی بدست آورده و به آن متغیير منتسب کنید .اینکار را با عملگر
NEWانجام دهید .
مثال:
) ( mybox=new Box
Myboxرا به عنوان یک ارجاع به شیئی از نوع Boxاعالن میکند
32
اعالن نمودن اشیاء در جاوا
33
نگاهی دقیق تر به NEW
;)(Class-var= new classname
Class-varیک متغير از نوع کالس ی است که ایجاد کرده ایم ،class nameنام کالس ی
است که میخواهیم معرفی کنیم .نام کالس که بعد از آن پرانتز ها قرار گرفته اند مشخص کننده
سازنده کالس است .
تعریف سازنده :سازنده تعریف میکند وقتی یک سیئی از یک کالس ایجاد شود چه اتفاقی خواهد
افتاد .
:NEWحافظه را برای یک شیئی طی زمان اجرا تخصیص میدهد .
34