Java Tips

طراحی و توسعه نرم افزار با زبان Java

Java Tips

طراحی و توسعه نرم افزار با زبان Java

Java Tips

اشتراک دانش و تجربه و یادگیری مستمر

وبلاگ مهندس نرم افزار

طبقه بندی موضوعی
بایگانی
نویسندگان

۶ مطلب با موضوع «Core Java» ثبت شده است

زبان جاوا یک زبان برنامه نویسی شیء گرا می باشد که مفاهیم زیر را پشتیبانی می کند :

  • Polymorphism
  • Inheritance
  • Encapsulation
  • Abstraction
  • Classes
  • Objects
  • Instance
  • Method
  • Message Parsing

حال به مفهوم Object و Class می پردازیم :

Object : هر شیء ای حالت(State) و رفتاری(Behavior) دارد. به عنوان مثال, یک سگ حالت هایی از قبیل رنگ, نام, قد, سن و ... دارد و رفتارهایی از قبیل خوردن, دویدن, پارس کردن دارد. یک شیء (Object) , یک نمونه(Instance) از کلاس است.

ایجاد یک Object سه مرحله دارد :

  1. 1.      Declaration (اعلان) : اعلان متغیر با یک نام و یک نوع.
  2. 2.      Instantiation (نمونه سازی یا وهله سازی) :  استفاده از کلمه کلیدی new برای ایجاد Object.
  3. 3.      Initialization (مقدار دهی اولیه) : بعد از اینکه با کلمه کلیدی new  شیء ایجاد شد, بلافاصله بطور اتوماتیک سازنده(Constructor) فراخوانی می شود. فراخوانی شدن سازنده باعث می شود که شیء مقدار دهی اولیه شود.

مثال :

 

بعد از کامپایل و اجرای قطعه کد بالا خروجی زیر را مشاهده می کنیم : 

Class : کلاس می تواند تعریف شده باشد به عنوان یک قالب که توصیف می کند حالات(States) و رفتارهای(Behaviors)  یک شیء از نوع خودش را.

در دنیای نرم افزار, یک شیء نرم افزار یک سری State و Behavior دارد. حالت یک شیء نرم افزار در داخل Instance Variable ها ذخیره شده اند  و رفتار با متدها نشان داده می شود.

یک مثال برای کلاس : 

کلاس ها انواع مختلف متغیر های زیر را شامل می شوند :

-        Local variables

-        Instance variables

-        Class variables

 

سازنده :

متدی همنام با خود کلاس است که وظیفه مقدار دهی اولیه(Initialize) یک Object را برعهده دارد. هنگامی که یک شیء new می شود بطور اتوماتیک

۰ نظر موافقین ۰ مخالفین ۰ ۲۰ اسفند ۹۵ ، ۱۹:۴۹
مهندس نرم افزار

عملگر ها

جاوا فراهم می کند مجموعه ای کامل از عملگر ها را برای تغییر و دستکاری داده ها. عملگر ها در جاوا به گروه های زیر تقسیم میشوند :

-          عملگر های حسابی

-          عملگر های رابطه ای

-          عملگر های بیتی

-          عملگر های منطقی

-          عملگر های انتساب

-          عملگر های متفرقه

 

عملگر های حسابی(Arithmetic Operators)

عملگر های حسابی در عملیات محاسباتی و ریاضی مورد استفاده قرار می گیرد.

*  فرض: دو متغیر از نوع int بنام های A و B داریم.

عملگر

شرح

مثال

+

جمع مقدار دو متغیر

A + B

-

تفریق عملوند سمت راست(B) از عملوند سمت چپ(A)

A - B

*

دو عملوند را در هم ضرب می کند

A * B

/

تقسیم عملوند سمت چپ بر عملوند سمت راست(بدست آوردن خارج قسمت)

A / B

%

تقسیم عملوند سمت چپ بر عملوند سمت راست(بدست آوردن باقیمانده)

A % B

++

افزایش یک واحدی عملوند

A++

--

کاهش یک واحدی عملوند

A--

 

 

 

عملگر های رابطه ای(Relational Operators)

عملگر های رابطه ای شامل موارد زیر است :

۰ نظر موافقین ۰ مخالفین ۰ ۰۶ اسفند ۹۵ ، ۲۱:۵۸
مهندس نرم افزار

هر شیء ای حالات(States) و رفتارهایی(behaviors) دارد که State بیانگر همان فیلد ها (Instance Variable ها) است و رفتار بیانگر همان متدها(Methods) (توابع) می باشد.

هر نمونه ای از یک کلاس(هر شیء از کلاس) می تواند مقادیر منحصر به فرد برای فیلد های خودش (Instance Variable) داشته باشد. رفتار(Behavior) عملیاتی روی State(حالات) یک کلاس انجام می دهد, به عبارت دیگر متد ها مقادیر فیلد ها (Instance Variable) ها را استفاده می کنند.

در حقیقت سه نوع متغیر داریم :

  • ·         Local Variables
  • ·         Instance Variables (Non-static variables)
  • ·         Class Variables (Static Variables)

 

Instance Variables(Non-Static Variables)

یک کلاس توصیف می کند که, چگونه یک Object شناخته می شود و چه کاری انجام می دهد.

در برنامه نویسی شیء گرا به Instance Variable ها , Attribute یا همان صفت و یا فیلد(Field) هم گفته می شود. Instance Variable باید در داخل کلاس تعریف شوند و باید بصورت Private(خصوصی) باشند. برای دسترسی به فیلد های (Instance Variable ها) کلاس باید getter و setter متناظر آن نیز پیاده سازی شود. هدف از خصوصی بودن Instance Variable ها Encapsulation(کپسوله سازی) می باشد که یکی از اصول برنامه نویس شیء گرا می باشد. getter و setter هم در حقیقت یک متد هستند. در مثال زیر یک فیلد (Instance Variable) برای کلاس و getter و setter های متناظر آن را پیاده سازی میکنیم :

نحوه دسترسی به Instance Variable و مقدار دهی آن نیز به این صورت می باشد :

Local Variable(متغیر های محلی)

متغیر های محلی فقط در داخل بدنه یک متد تعریف می شوند و حوزه (Scoop)  آن نیز داخل بدنه آن متد است.

Class Variables(Static Variables)

متغیر استاتیک : گاهی اوقات لازم است که مقدار یک متغیر, بین همه شیء های یک کلاس, یکی و مشترک باشد ولی در حالت معمولی هر شیء از یک کلاس کپی خودش را از

۰ نظر موافقین ۰ مخالفین ۰ ۰۶ اسفند ۹۵ ، ۲۱:۳۳
مهندس نرم افزار

لازم است در ابتدای کار گفته شود که جاوا زبانی است که نوع داده در آن به شدت کنترل می شود(Type-Safety است), در واقع بخشی از امنیت و استحکام جاوا از این امر ناشی می شود.

متغیر: متغیر واحد پایه ذخیره سازی در برنامه نویسی است. هر متغیر بوسیله ترکیبی از شناسه, نوع, مقدار اولیه(دلخواه) تعریف می شود. زمانیکه یک متغیر ایجاد می کنیم یک قسمت از فضای RAM به این متغیر اختصاص می یابد.

متغیر ها در جاوا در دو نوع هستند:

 1. Primitive Data Type

 2. Reference/Object Data Type

  • Primitive Data Type ها مقادیر پایه را نگهداری می کنند مانند: int, char, float, short, byte, Boolean, Double, long .
  • Reference/Object Data Type ها آدرس ارجاع به Object ها(اشاره گر به یک شیء که در حقیقت همان آدرس متغیر در RAM است) را نگهداری میکنند.

نحو کلی تعریف متغیر :

Type identifier [= value];

int temp = 88;

مثال: 

تعریف متغیر شامل دو مرحله است: 

  • مرحله Declaration (اعلان) : 

  • مرحله Creation(ایجاد) :

در حقیقت Type نام یک کلاس است و identifier نام متغیر شما است.

متغیر ها یا Single Value هستند مانند int, char, float, short, byte, Boolean, Double, long که همان نوع داده پایه یا Primitive Variable هستند و یا Multiple Value هستند مانند Collection, Class, Array که اسم دیگر آنها Reference Variable می باشد.

داده پایه(Primitive Variable) : متغیر های تعریف شده از این نوع از Stack(یک حافظه کوچک از RAM و CPU که فضای کم ولی سرعت بالا دارد)  فضای حافظه می گیرند. در عمل انتساب

۰ نظر موافقین ۰ مخالفین ۰ ۰۶ اسفند ۹۵ ، ۲۱:۰۲
مهندس نرم افزار

زمانیکه ما یک برنامه جاوا را مطرح می کنیم, آن می تواند در یک مجموعه از شیء ها تعریف شده باشد که از طریق فراخوانی یکدیگر با  هم  ارتباط دارند. حال  اجازه بدهید  به طور خلاصه  نگاهی  کنیم  به  اینکه  معنی class, object, methods  و      instance variables چیست ؟

* Object : هر شیء ای حالت(State) و رفتاری(Behavior) دارد. به عنوان مثال, یک سگ حالت هایی از قبیل رنگ, نام, قد, سن و ... دارد و رفتارهایی از قبیل خوردن, دویدن, پارس کردن دارد. یک شیء (Object) , یک نمونه(Instance) از کلاس است.

* Class : کلاس می تواند تعریف شده باشد به عنوان یک قالب که توصیف می کند حالات(States) و رفتارهای(Behaviors)  یک شیء از نوع خودش را.

* Method : یک متد(یا یک تابع) اساسا یک رفتار است. یک کلاس می تواند تعداد زیادی متد داشته باشد. متد جایی است که الگوریتم و منطق تجاری نوشته می شود, داده دستکاری می شود و همه اعمال اجرا می گردد.

* Instance Variable : هر شیء ای متغیر های نمونه(Instance Variable) یا همان فیلد های مخصوص و یکتای خود را دارد. یک State شیء ایجاد می شود بوسیله مقادیری که اختصاص داده شده به این Instance Variable ها.

خوب! حال اولین برنامه Hello World خود را می نویسیم:

اکنون این قطعه کد را در یک فایل text نوشته و کامپایل و اجرا می کنیم:

-          برنامه Notepad را باز کرده و قطعه کد بالا را در آن کپی کنید.

-          فایل را با نام MyFirstJavaProgram و پسوند .java ذخیره کنید(MyFirstJavaProgram.java).

-          پنجره Command Prompt ویندوز را باز کرده و به مسیری که فایل جاوا را ذخیره کرده اید بروید.

-          دستور javac MyFirstJavaProgram.java را تایپ کرده و کلید Enter را بزنید تا کد کامپایل شود.

-          حال دستور java MyFirstJavaProgram را وارد نمایید تا برنامه اجرا شود.

-          خروجی :

 

نحو(Syntax) عمومی جاوا بصورت زیر می باشد :

  • Case Sensitive : جاوا به حروف بزرگ و کوچک حساس است؛ یعنی identifier کلمه Hello با hello متفاوت می باشد.
  • Class Name : حرف اول کلاس ها باید با حرف بزرگ(Upper Case) شروع شود.
  • Method Name : همه اسم متد ها باید با حرف کوچک(Lower Case) شروع شود.
  • Program File Name : نام Program File باید با نام کلاس یکی باشد.

 

شناسه های جاوا(identifier java)

همه کامپوننت های جاوا به نام احتیاج دارند. نام هایی که برای کلاس ها, متغیر ها و متد ها استفاده می شوند, identifier(شناسه) نامیده می شوند. در اینجا چند نکته حائز اهمیت است :

  • حرف اول همه identifier ها باید حروف(A تا Z یا a  تا z), کاراکتر $ یا کاراکتر underscore ( _ )  باشد.
  • بعد از حرف اول, identifier ها می توانند ترکیبی از کاراکتر ها را داشته باشند.
  • Keyword ها نمی توانند بعنوان identifier استفاده شوند.
  • Identifier های مهم, Case Sensitive هستند.
  • نمونه identifier صحیح :  age, $salary, _value, __1_value
  • نمونه identifier نادرست : 123abc, -salary

 

تعیین کننده های سطح دسترسی در جاوا (Java Modifier)

مانند دیگر زبان های برنامه نویسی می توان سطح دسترسی کلاس ها و

۰ نظر موافقین ۰ مخالفین ۰ ۰۶ اسفند ۹۵ ، ۲۰:۲۹
مهندس نرم افزار

جاوا در یک نگاه

جاوا  یک زبان برنامه نویسی شیء گرا و سطح بالا(High Level) است که نخستین بار توسط جیمز گاسلینگ در سال 1995 در شرکت سان مایکروسیستمز ایجاد و بعنوان بخشی از سکوی جاوا(Java Platforms) منتشر گردید. شرکت Sun Microsystems در سال 2010 توسط شرکت اوراکل خریداری گردید.

James Gosling

 

پس از فروش این شرکت به اوراکل گاسلینگ شرکت را ترک کرد و تبدیل به یکی از بزرگترین منتقدان اوراکل شد. پس از آن برای یک دوره کوتاه ۵ ماهه به گوگل پیوست و در حال حاضر نیز در استارت آپ Liquid Robotics‌ مشغول به کار است.

این زبان بوسیله زبان C++ پیاده سازی گردید. زبان جاوا شبیه به C++  است اما مدل شیء گرایی آسانتری نسبت به آن دارد و از قابلیت های سطح پایین کمتری پشتیبانی می کند. یکی از قابلیت‌های بنیادین جاوا این است که مدیریت حافظه را بطور خودکار انجام می‌دهد(توسط GC(Garbage Collector) انجام می شود) و در اصطلاح یک زبان برنامه نویسی Managed می باشد.

در حقیقت عمل Garbage Collection(زباله روبی) نوعی مدیریت منابع بصورت خودکار است. این روش خاصی برای مدیریت منابع است که منابع محدود از قبیل حافظه RAM و ... در آن مدیریت می‌شوند. تکنیک زباله‌روبی توسط جان مک‌کارتی در حدود سال ۱۹۵8 برای حل مشکلات Lisp اختراع شده‌ است. این تکنیک مشکل تنظیم دستی حافظه RAM را حل می کند زیرا در تنظیم دستی حافظه, برنامه نویس باید مشخص کند که کدام اشیاء(Object ها) و در چه زمانی, باید حافظه را بازپس دهند(حافظه را آزاد کنند). به عبارت دیگر, Garbage Collector به طور اتوماتیک آن Object ها را تخریب(Dispose و یا Destroy) می کند.

ضریب اطمینان عملکرد برنامه‌های نوشته‌ شده به این زبان بالا است و وابسته به سیستم عامل خاصی نیست(اصطلاحا, جاوا      Cross-Platform است)، به عبارت دیگر می‌توان آن را روی هر رایانه با هر نوع سیستم عاملی اجرا کرد.

پلتفرم(سکوی) جاوا به مجموعه‌ای از محصولات نرم‌افزاری و مشخصه‌ها از شرکت سان مایکروسیستمز، یک زیر مجموعه از شرکت اوراکل ، اطلاق می‌شود که به منظور ایجاد محیطی برای نوشتن نرم ‌افزار هایی که به صورت چند سکویی(Cross-Platform) اجرا می‌شوند به کار می‌رود. جاوا در محدوده وسیعی از کاربردها، مورد استفاده قرار می گیرد. کاربردهایی که محدوده ی وسیعی از سکوهای محاسباتی(Computing Platforms)، سامانه های توکار(Embedded Devices)، تلفن های همراه(Mobile Devices) که کاربردهایی در دستگاه‌های معمولی هستند تا دستگاه هایی از قبیل ابر رایانه ها(Super Computers) و سرورهای سازمانی                        (Enterprise Servers) و Main Frame ها را شامل می شود.

در ۱۳ نوامبر سال ۲۰۰۶(۲۲ آبان ۱۳۸۵)، شرکت سان مایکروسیستمز بخش عظیمی از جاوا را تحت پروانه عمومی همگانی گنو (GNU GPL) منتشر نمود. اگرچه بخش هایی از جاوا، هرچند اندک، هنوز به دلیل مسایل کپی رایت با مجوز سان و به صورت بایناری(کد هایی از پیش کامپایل شده)، منتشر گردید؛ چرا که این بخش‌ها متعلق به شرکت سان نیست. برای کسب اطلاعات بیشتر در مورد مجوز های نرم افزار های سورس باز می توانید به لینک زیر مراجعه نمائید:

Comparison of free and open-source software licenses 

  1. سیستم‌عامل:  هر چقدر زبانهای  .NET قوی باشند تنها بر روی پلت فرم ویندوز اجرا می‌شوند و برخی ویندوز را سیستم عامل غیرقابل اعتمادی در برنامه نویسی Enterprise می‌دانند. ولی جاوا از این نظر انتخاب خوبی است.
  2. قابلیت حمل:  جاوا بر روی سکوهای رایانش گوناگونی قابل اجرا است، از  ATM  و   ماشین رختشویی گرفته تا سرورهای سولاریس با قابلیت پشتیبانی از 1024 عدد CPU  برای پردازش.
  3. جاوا بیشتر از یک زبان است:  جاوا فقط یک زبان نیست و انجمن‌هایی متشکل از بزرگان صنایع و برنامه‌نویسان زیادی مشغول به توسعه و ایجاد استانداردهای جدید و به روز هستند.

جاوا، متبادر کننده مفهومی خاص است :  یکبار بنویس، همه‌جا اجرا کن(Write Once, Run Anywhere). این مفهوم توسط JVM(Java Virtual Machine)، پیاده‌سازی شده است.  JVM، محیطی برای اجرای برنامه‌های نوشته شده به زبان جاوا می‌باشد. این ماشین مجازی, نرم‌افزاری است که در لایه  بالایی سخت‌افزار واقعی و سیستم عامل قرار می‌گیرد.

به زبان ساده وقتی یک برنامه به زبان جاوا را می نویسید و کامپایل می کنید بلافاصله کد محلی(Native Code) یا همان کد ماشین تولید نمی شود, کامپایلر کد های شما را به ByteCode تبدیل می کند. در مرحله بعدی کامپایلر JIT(Just-In-Time) که در ماشین مجازی جاوا(JVM)  است این بایت کد را به کد محلی یا همان کد ماشین تبدیل می کند که این کد ماشین همان دستور العمل هایی هستند که مستقیما توسط CPU و سیستم عامل قابل اجرا هستند.

در گذشته برای اینکه بتوانید برنامه های خود را در سیستم عامل های مختلف

۰ نظر موافقین ۰ مخالفین ۰ ۰۶ اسفند ۹۵ ، ۱۹:۴۳
مهندس نرم افزار