370 likes | 592 Views
دانشگاه علمی کاربردی جهاد دانشگاهی مشهد. Introduction to Java. فصل 1. مهندس علی رضوانی مقدم. بهار92. سرفصلهاي يادگيري هر زبان برنامه نويسي عبارتند از. قالب كلي زبان قالب كلي دستورات انواع داده ها تعريف متغير و نحوه انتساب و قوانين نامگذاري دستورات شرطي و كنترلي دستورات تكرار
E N D
دانشگاه علمی کاربردی جهاد دانشگاهی مشهد Introduction to Java فصل 1 مهندس علی رضوانی مقدم بهار92
سرفصلهاي يادگيري هر زبان برنامه نويسي عبارتند از قالب كلي زبان قالب كلي دستورات انواع داده ها تعريف متغير و نحوه انتساب و قوانين نامگذاري دستورات شرطي و كنترلي دستورات تكرار ساختمان داده ها (آرايه ها ،رشته ها و...) نحوه كار با فايلها نحوه نوشتن توابع و.... 1
دسته بندي زبانهاي از لحاظ نزديكي به سخت افزار: سطح پايين مانند اسمبلي سطح ميانه مانند C,C++ سطح بالا مانند Java،Pascal،Delphi،.net دسته بندي به لحاظ ساختيافتگي –شي گرا: ساخت يافته C،Pascal ساخت يافته-شي گرا C++،JAVA،Delphi،.net غيرساخت يافته qbasic 2
چرا فنجان قهوه؟ Any WhereEvery Where Java Is There 3
تاریخچه جاوا • Sun Microsystems • در آغاز تبدیل شدن به بزرگترین ایستگاههای کاری Unix • علاقمند در زمینه بازار لوازم الکترونیکی • پیدایش Green • شکست پروژه گرین و استقبال نشدن از این پروژه • آغاز به کار در سال 1994توسط جیمزگوسلینگ • هدف اجرای برنامه ها در بسترهای سخت افزاری مختلف • نارسایی C++ در این زمینه • OAK ساخته شده از ویرانه یک پروژه کاملا شکست خورده • تغییر نام OAKبه (Jsut Another Vague Acronym) Java جیمز گوسلینگ پدید آورنده جاوا 4
اهداف اصلي در زمان پياده سازي جاوا • از متدولوژي شيءگرايي در اين زبان بطور كامل استفاده شود. • قابليت اجراي برنامه هاي يكسان در سيستم عامل هاي مختلف • پشتيباني از ويژگي هاي شبكه هاي كامپيوتري • اجراي راه دور برنامه ها بصورت كاملا امن • كاربرد راحت و ساده زبان به كمك انتخاب اجزاء مفيد • ساير زبانهاي شيءگرا و استفاده از آن در جاوا (الگوبرداري) 5
ساده(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 بارکننده کلاس Class Loader Java Api Byte Code موتور اجرا Execution engine 15
فرايند توليد نرم افزار • برنامه ها ابتدا در يك محيط ويراستاري متني نوشته مي شود و با پسوند .java ذخيره مي گردد. سپس اين فايل بوسيله كامپايلر جاوا ترجمه و به فايلي با پسوند .class تبديل مي گردد. 16
لایه های امنیتی جاوا • سیستم امنیتی جاوا از پنج قسمت تشکیل شده است: • کامپایلر آن تضمین می کند که قوانین امنیتی را زیرپا نمی گذارد • نظارت و کنترل بایت کدها • Verifier • بارکننده کلاس ها (Class Loader) بررسی می کند که • کلاس ها به محدودیت ها دسترسی نداشته باشند • باز پس گرفتن فضا توسط Gc (Garbage Collector) 18
نقاط ضعف جاوا • سرعت اجرای بسیار پایین به دلیل بایت کدها • نادیده گرفتن برخی از اصول شی گرایی به دلیل بازاریابی بهتر و انعطاف بیشتر • حذف اشاره گرها و وراثت چندگانه • عدم توانایی در استفاده از توابع سیستم عامل به دلیل مستقل از سکو بودن 19
پلتفرم های جاوا پلتفرم جاوا از دو مولفه تشكيل شده است: 1- ماشين مجازي جاوا 2- API انواع پلتفرمهاي جاوا Java Platform, Standard Edition – Java SE Java Platform, Enterprise Edition – Java EE Java Platform, Micro Edition – Java ME Java Card 20
متغيرها و انواع دادهها: • اکثرا نیاز به ذخیره مقدارها دارند که می خواهیم از آنها استفاده کنیم .برای بازیابی یک مقدار باید آنرا در یک متغیر نکهداری کنیم . یک متغییر محل ذخیره در حافظه کامپیوتر است که ویژگیهایی مثل نام ، نوع ومحتویات دارد. 24
تعريف متغيرها: تعريف متغير از يك نوع و يك نام: intmyAge string myname; boolean is tired چند متغير از يك نوع: intx,y,z string firstname, lastname; 25
مقداردهي به متغير درهنگام تعريف: intmyAge, mysize, numshoes= 28; string myname= “laura”; boolean is Tired= true 18
ثابت ها تعریف ثابت در جاوا کافی است که به ابتدای فرایند تعریف متغییر کلمه کلیدی final را اضافه کنیم مانند مثال زیر Final String MANUFACTURER; مثال : 27
عملگر تخصیص مقدار 1 • مقدار متغییر را میتوان با یک علامت (=) تغییر داد . • اگر می خواهید که مقدار را عوض کنید به راحتی مقدار جدید بدهید • مانند مثال زیر:مقدار جدید بجای مقدار اصلی قرار می گیرد • اگر از یک متغییر که هیچ مقداری نداشته استفاده منید با خطا مواجه می شوید : • خطا مقدار دهی داده شده است. 2 28
توضیحات در جاوا: نوع اول :از /* شروع در خاتمه */ قرار ميدهيم. نوع دوم : براي توضيحات تك خطي از // استفاده ميكنيم. نوع سوم: برنامه 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.”); • 10.the point.y= 15; • 11.system.out.println(“x is” + the point.x); • 13.system.out.println(“Y is” + the point.y); • } • } برنامهاي را مشاهده ميكنيد كه دستورات انتساب مقدار به يك شي و ايجاد يك شي را مشاهده كرد. • خروجي: • X is 10 • Y is 10 • Setting X to 5. • Setting Y to 15. • X is 5 31
اعلان نمودن اشیاء ابتدا باید یک متغیر از نوع همان کلاس اعلان نمائید . یک کپی فیزیکی و واقعی از شیٍ بدست آورده و به آن متغییر منتسب کنید . اینکار را با عملگر NEWانجام دهید . مثال: ( )mybox=new Box Myboxرا به عنوان یک ارجاع به شیئی از نوع Boxاعلان میکند 32
نگاهی دقیق تر به NEW Class-var= new classname(); Class-varیک متغیر از نوع کلاسی است که ایجاد کرده ایم class name ، نام کلاسی است که میخواهیم معرفی کنیم .نام کلاس که بعد از آن پرانتز ها قرار گرفته اند مشخص کننده سازنده کلاس است . تعریف سازنده : سازنده تعریف میکند وقتی یک سیئی از یک کلاس ایجاد شود چه اتفاقی خواهد افتاد . NEW: حافظه را برای یک شیئی طی زمان اجرا تخصیص میدهد . 34
باتشكر از دوستان گرامي كه تا بدين لحظه ما را در ارائه بهتر ياري نمو ده اند.