دانلود

Download Report

Transcript دانلود

‫برنامه نویس ی پیشرفته‬
‫مقدمات‬
‫‪1‬‬
‫محتوی درس‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫آشنایی با برنامه نویسی شی گرا )‪ (OOP‬و طراحی شی‬
‫گرا )‪(OOD‬‬
‫آشنایی با زبان جاوا‬
‫آشنایی با محیط برنامه نویسی ‪Eclipse‬‬
‫تاکید بر برنامه نویسی صحیح‬
‫وب سایت درس‪:‬‬
‫‪www.ilam.ac.ir/staffs/mozafar/jv‬‬
‫‪2‬‬
‫‪Version 9/10‬‬
‫نمره دهی‬
‫‪ ‬حضور در کالس الزامی است‪.‬‬
‫‪ ‬تحویل ‪ 60‬درصد تمرینات برای شرکت در امتحان الزامی است‪.‬‬
‫‪ ‬ساختار نمره‪:‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫تمرینات برنامه نویسی‪ 10 :‬سری تمرین مجموعا ‪ 5‬نمره‬
‫پروژه‪2 :‬نمره‬
‫امتحانات‪ 14 :‬نمره‬
‫‪ ‬حل تمرینها‪:‬‬
‫‪3‬‬
‫برنامه نویس ی بر اساس تابع و برنامه نویس ی ش ی گرا‬
‫)‪Object-Oriented (OO‬‬
‫مثالها‪ :‬جاوا ‪ C++ ،‬و رابی‬
‫مثالها‪ C :‬و پاسکال‪ ،‬پیتون و بیسیک‬
‫واحدهای ماژول‪ :‬اشیا‬
‫واحدهای ماژول‪ :‬توابع‬
‫ساختار برنامه‪ :‬گراف‬
‫ساختار برنامه‪ :‬سلسله مراتبی‬
‫داده و عملگرها به همدیگر مقید هستند‪.‬‬
‫داده و عملگرها به همدیگر مقید نیستند‪.‬‬
‫مجموعه ی اشیا‬
‫‪Procedural‬‬
‫سلسه مراتب توابع‬
‫‪4‬‬
‫‪Version 9/10‬‬
‫مقایسه ی مختصر پیتون و جاوا‬
Python:
print “Hello, world”
quotient = 3 / 4
if quotient == 0:
print “3/4 == 0”,
print “in Python”
else:
print “3/4 != 0”
Java:
public class Hello {
public static void main(String[] args) {
int quotient;
System.out.println(“Hello, world”);
quotient = 3 / 4;
if (quotient == 0) {
System.out.print(“3/4 == 0”);
System.out.println(“ in Java”);
}
else {
System.out.println(“3/4 != 0”);
}
}
}
// Things to note:
// Everything has to be in some class
// We need a “main()”
// Statements end with ‘;’
// Variables must be declared
// “if/else” syntax different
// Statement blocks demarcated by “{…}”
// Comments are different 
// …but there is much that is similar
Version 9/10
5
‫ش ی چیست؟‬
.‫باید ابتدا یک کالس تعریف کنیم‬
:‫ساختار داده ای که شامل‬
.‫ که همان حالت شی هستند‬:‫خصوصیات‬
.‫ که رفتارهای شی را تعریف می کنند‬:‫توابع‬



Bank Account
account number
owner’s name
balance
interest rate
more?
deposit money
withdraw money
check balance
transfer money
more?
Version 9/10
String
name
attributes
(state)
operations
(behaviors)
sequence of characters
more?
compute length
concatenate
test for equality
more?
6

‫پس ش ی ‪...‬‬
‫‪‬‬
‫یک نمونه از کالس است‪.‬‬
‫‪Mitchell’s Account‬‬
‫‪Frey’s Account‬‬
‫‪43-261-5‬‬
‫‪Susan Mitchell‬‬
‫‪$825.50‬‬
‫‪2.5%‬‬
‫‪65-432-1‬‬
‫‪Dennis Frey‬‬
‫‪$5.50‬‬
‫‪2.7%‬‬
‫‪Bergeron’s Account‬‬
‫‪12-345-6‬‬
‫‪Ryan Bergeron‬‬
‫‪$1,250.86‬‬
‫‪1.5%‬‬
‫برای هر کدام از این حسابها می توان‪:‬‬
‫•در حساب پول گذاشت‪.‬‬
‫•از حساب پول برداشت‪.‬‬
‫•صورتحساب گرفت‪.‬‬
‫•پول انتقال داد‪.‬‬
‫‪7‬‬
‫‪Version 9/10‬‬
‫وضعیت جاوا در سال ‪2010‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫یک زبان ‪ OO‬مدرن و محبوب‬
‫استفاده ی فراوان در صنعت‬
‫استفاده در انواع کاربردها‬
‫خصوصیات جالب جاوا‪:‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫شی گرا‬
‫قابل حمل‬
‫پشتیبانی آسان از متغییرهای پویا‬
‫مدیر حافظه ی خوب‬
‫ی ‪ GUI‬پیش ساخته‬
‫کتابخانه ‪8‬‬
‫‪Version 9/10‬‬
‫تاریخچه ی جاوا‬
‫‪‬‬
‫‪‬‬
‫توسط تیم شرکت سان به رهبری جیمز گاسلینگ ایجاد‬
‫شد‪.‬‬
‫در ابتدا برای برنامه ریزی وسایل خانگی طراحی شد‪.‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫این کار مشکل است چون وسایل خانگی از پردازنده های‬
‫متفاوتی استفاده می کنند‪.‬‬
‫نوشتن یک کامپایلر برای هر پردازنده مقدور نیست‪.‬‬
‫راه حل‪ :‬ترجمه ی دو مرحله ای‪:‬‬
‫‪‬‬
‫‪‬‬
‫کامپایل کردن کد جاوا به یک مرحله ی میانی (بایت کد)‬
‫اجرای بایت کد توسط مفسری به اسم ماشین مجازی جاوا )‪(JVM‬‬
‫‪9‬‬
‫‪Version 9/10‬‬
‫کامپایلر ‪ ،‬مفسر و ‪JVM‬‬
‫)‪Compiled Languages (e.g. C, C++‬‬
‫برای هر پردازنده باید یک‬
‫کامپایلر بنویسیم‬
‫‪execute‬‬
‫‪binary code‬‬
‫‪compile‬‬
‫‪source code‬‬
‫)‪Interpreted Languages (e.g. JavaScript, Perl, Ruby‬‬
‫•مفسر کد برنامه را خط به خط تبدیل به باینری کرده و اجرا می‬
‫کند‪.‬‬
‫‪interpret‬‬
‫•برنامه نویس ی سریع و ساده و اجرای کند‬
‫‪source code‬‬
‫•برای هر پردازنده باید یک مفسر بنویسیم‬
‫‪Java‬‬
‫•بایت کد از پردازنده مستقل است‬
‫•‪ JVM‬برای هر پردازنده متفاوت است‪.‬‬
‫‪10‬‬
‫‪interpret‬‬
‫‪bytecode‬‬
‫)‪Java Virtual Machine (JVM‬‬
‫‪compile‬‬
‫‪source code‬‬
‫‪Version 9/10‬‬
C/C++ ‫کامپایل و اجرا در‬
Project Library
for Linux
Linux
binary
C/C++
Code
Linux
executable
Linux C/C++ linker
Project Library
for Windows
Windows
binary
Windows
executable
Windows C/C++ linker
Version 9/10
11
‫کامپایل و اجرا در جاوا‬
Java
Code
javac Hello.java
Java interpreter (JVM)
translates bytecode to
machine code in JRE
Java compiler
Hello.java
JRE for
Linux
Java
Bytecode
Hello.class
JRE for
Windows
Version 9/10
12
‫واژه نامه ی جاوا‬
‫‪‬‬
‫‪ JVM‬به ماشین مجازی جاوا گفته می شود که بایت کد را به کد ماشین‬
‫ترجمه می کند‪.‬‬
‫‪‬‬
‫‪ API‬به واسط برنامه نویسی کاربرد (یعنی همان کتابخانه های جاوا) گفته‬
‫می شود‪.‬‬
‫‪‬‬
‫‪ :JRE‬محیط اجرایی جاوا‬
‫‪‬‬
‫‪ JVM‬بعالوه ی ‪ API‬جاوا‬
‫‪ JRE :JDK ‬بعالوه ی ابزارهای کامپایل و خطایابی جهت برنامه نویسی‬
‫‪ :J2SE ‬نسخه ی استاندارد پالتفرم جاوا ‪2‬‬
‫‪‬‬
‫‪ JRE‬و ‪ JDK‬بعنوان یک خانواده در نظر گرفته می شوند‪.‬‬
‫‪Versionhttp://java.sun.com/javase/technologies/index.jsp‬‬
‫‪9/10‬‬
‫‪13‬‬
‫نسخه های جاوا‬
‫‪‬‬
‫‪‬‬
‫نسخه ی فعلی‪ :‬جاوا ‪ 6‬که به اسم جاوای ‪ 1.6‬و ‪ 1.6.0‬نیز‬
‫شناخته می شود‪.‬‬
‫نسخه ی قبلی‪ :‬جاوا ‪5‬که به اسم جاوای ‪ 1.5.0 ، 1.5‬و‬
‫جاوای ‪ SE 2‬نسخه ی ‪ 5‬نیز شناخته می شود‪.‬‬
‫‪14‬‬
‫‪Version 9/10‬‬
‫کاربردهای جاوا‬
‫‪‬‬
‫انواع برنامه های جاوا‪:‬‬
‫‪‬‬
‫کاربردها‪:‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫برنامه ای که دارای یک کالس است و متدی به نام ‪ main‬دارد‪.‬‬
‫هنگام اجرای برنامه‪ ،‬سیستم بصورت اتوماتیک ‪ main‬را صدا می زند‪.‬‬
‫تمام برنامه های کاربردی جاوا با ‪ main‬شروع می شوند‪.‬‬
‫اپلت‪:‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫برنامه جاوایی که قرار است توسط مرورگر وب اجرا شود‪.‬‬
‫می توان آنرا روی اینترنت قرار داد‪.‬‬
‫می توان توسط برنامه ی مشاهده ی اپلت آنرا اجرا کرد‪.‬‬
‫تمام اپلتها دارای واسط پنجره هستند‪ .‬اما کاربردها از کنسول ‪ I/O‬یا واسط پنجره‬
‫استفاده می کنند‪.‬‬
‫‪15‬‬
‫‪Version 9/10‬‬
‫‪The Eclipse IDE‬‬
‫‪ ‬یک ‪ IDE‬مجتمع برای نوشتن برنامه های جاوا‪.‬‬
‫شامل‪:‬‬
‫‪ ‬ادیتور‬
‫‪ ‬خطایابی‬
‫‪ ‬کامپایلر جاوا‬
‫‪ JVM ‬جاوا‬
‫قابل دانلود از اینترنت بصورت مجانی است‪.‬‬
‫‪16‬‬
‫‪Version 9/10‬‬
Eclipse IDE Screenshot
Version 9/10
17