۱۳۸۹ دی ۱۹, یکشنبه

هش ماپ Hash map

درادامه مجموعه های جاوا:

به هر حال مجموعه های جاوا خیلی بهتر از آرایه ها هستند. در اینجا ما hash map را معرفی می‌کنیم یک hash map یک رابطه یک به یک بین یک شی به شی دیگر است. اجازه دهید به روش دیگر برای کسانی که نمی‌خواهند ریاضی را حفظ کنند توضیح دهم.


اجازه دهید فرض کنیم شما می‌خواهید به‌ حساب ایمیلتان دسترسی پیدا کنید. شما نمی‌توانید این کار را انجام دهید مگر آنکه ابتدا لاگین کنید. در صفحه ی لاگین شما باید نام کاربری و رمز عبور خود را وارد کنید و در صورتی که آن دو ترکیب درست بود می‌توانید به حساب ایمیلتان درسترسی پیدا کنید.


یک hash map به طور مشابه کار می کند. شما باید یک ورودی مناسب داشته باشید تا یک خروجی درخور تحویل بگیرید. هر ورودی دقیقآ به یک خروجی مرتبط می شود. در مثال قبلی یک ترکیب نام کاربری و رمز عبور به دقیقآ یک حساب ایمیل منجر می شود.


در اینجا می تونید یک نمونه کد hash map ببینید



دوباره شما جمله import را فراموش کردید. به طور معمول می‌توانید جمله import ی را که احتیاج دارید به شکل زیر تایپ کنید.


Import java.util.NameOfObject


و به جای نام شی از نام مجموعه‌ای که استفاده می‌کنید استفاده کنید که در اینجا HashMap است. همچنین می‌توانید با گرفتن کلید های Ctrl + Shift + O به طور خود کار هر چیزی را در اکلیپس وارد یاimport کنید.


اگر به HashMap ی که ساخته این نگاه کنیم می‌بینیم اولین مقدار و همچنین دومین آن هر دو استرینگ هستند. البته شما می تونید هر نوع ترکیبی داشته باشید.


شما از یک کلید برای بدست آوردن یک مقدار استفاده می کنید. یک کلید درست برابر یک مقدار، درست مثل یک نام کاربری برابر یک رمز عبور.


وارد کردن یک کلید/مقدار جدید آسان است


map.put(“Me” , “Password”);


و به شکل زیر آن‌ها را حذف می‌کنید


map.remove(“Me”);


اگر یک آرایه از کل کلید ها در یک هاش مپ بخواهید می‌توانید از متد KeySet استفاده کنید


String [] keys = map.KeySet ().toArray(new String[map.size()]);


این نسبتآ خدعه آمیز است. متد KeySet یک مجموعه Set را برمی گرداند. سپس آن مجموعه به یک آرایه ای از استرینگ Strings با ایجاد یک new String تبدیل می‌شود که طولی برابر اندازه هش مپ دارد. سپس آن آرایه در یک آرایه دیگر که کلید keys خوانده می‌شود ذخیره می شود. دلیل آنکه من یک آرایه از رشته‌ها strings درست کردم این است که کلیدها keys همه از قبل رشته Strings هستند.


چگونه است که هش مپ ها مفید هستند؟ آن‌ها به شما این اجازه را می‌دهند که اشیاء را با در نظر گرفتن دیگر اشیاء در عوض مقادیر لیست شده ذخیره کنید، همانند آنچه شما با یک ArrayList انجام می دهید



نکته: تکرار می‌کنم شما نمی‌توانید در ArrayList ها ، HashMap ها و یا هر مجموعه ی جاوا دیگر نوع های اولیه primitive types را ذخیره کنید. مجموعه های جاوا فقط اشیاء را ذخیره می کند. این بسیار مهم است پس فراموش نکنید.


امیدوارم این نوشتار مقدمه مفیدی در استفاده از انواع توسعه یافته ی مجموعه ها در اختیار شما قرار داده باشد. آن‌ها ابزار های قدرتمندی هستند به شرط آنکه به جا استفاده شوند و می‌توانند قابلیت‌های برنامه شما را به طور چشمگیری ارتقاء دهند.مجموعه های جاوا بیش از چیزی هستند که من در اینجا لیست کردم ؛ من به شدت شما را تشویق می‌کنم که به بقیه آن‌ها نگاهی بیندازید، بیاموزید چگونه از آن‌ها استفاده کنید و سپس در برنامه‌های خودتان به کار بگیرید.

۱۳۸۹ دی ۱۷, جمعه

لیست آرایه ها و هاش مپ ها Java Collections - ArrayLists and HashMaps

English


مقدمه

لیست آرایه؟ هاش مپ؟ تری ست؟

مجموعه های جاوا مهمترین ابزار برای ذخیره بیشتر انواع داده‌های پویا می باشند. چه اتفاقی خواهد افتاد اگر شما پیشاپیش ندانید چه مقدار داده وجود خواهد داشت؟ چه اتفاق خواهد افتاد اگر نوع داده‌ها یی که می‌خواهید ذخیره کنید از یکی از انواع اصلی داده نباشد؟ آنچه من در اینجا می‌خواهم عنوان کنم این است که چه اتفاقی خواهد افتاد اگر برای مثال من بخواهم یک گروه از اشیاع یک سگ را ذخیره کنم. البته باید از یک آرایه استفاده کنم ولی اگر پیشاپیش ندانم آن‌ها چه تعداد هستند چطور؟ اگر من بخواهم بین داده‌ها یا پیوند ها …..یک رشته متنی با یک شی ویژه نسبتی برقرار کنم چطور؟


خب برویم یک نگاه کوتاه و ساده به مجموعه ها در جاوا بیندازیم و یاد بگیریم چگونه آن‌ها را به کار ببریم.


ArrayList


اجازه بدید فرض کنیم شما یک شبیه ساز زمین را می سازید و شما یک جمعیت انسانی دارید که در حال رشد است. اگر انسان یک شی باشد چند شی انسانی در پایان شبیه سازی وجود خواهند داشت؟ چه اتفاقی خواهد افتاد در پایان این شبیه سازی؟ چگونه شما خواهید دانست چقدر شی انسانی خواهید داشت، قبل از اینکه آرایه ها را بسازید تا بتوانید همه آن‌ها را در آن ذخیره کنید؟ درست این است که شما در عمل احتمالآ می تونید یک حدس بزنید، و چنانچه شما احتمالاً می دونید این حدس قابل قبول نیست؟


جاوا یک شی بطور باورنکردنی مفیدی به نام ArrayList دارد. ArrayList جاوا اصولآ یک آرایه داینامیک است. وقتی شما این شی را می سازد شما در کل یک سایز برای آن تعیین نمی کنید. اجازه بدید من آن را بهتر بگویم شما احتیاج ندارید که یک اندازه برای ArrayList تعیین کنید بله این آرایه ایست که ابتدا به امر خالی است


یک ArrayList شبیه چیست؟ این یک نوع کلک است. زیرا یک ArrayList می‌تواند هر چیزی را ذخیره کند، ما می‌ خواهیم اطمینان حاصل کنیم که این دقیقآ همان چیزی است که می‌خواهیم ذخیره نماییم. اجازه دهید یک مثال سریع انجام دهیم و بگوییم ما می‌خواهیم ArrayList اعداد صحیح را ذخیره نماید.


توجه: Integer و int یکسان نیستند. Integer یک شی است و int یک نوع اولیه است. جاوا می‌تواند آن‌ها را به سادگی به کار بگیرد.


لینک کد


اگر از اکلیپس استفاده کنید زیر خط ArrayList خط قرمز مشاهده خواهید کرد این به خاطر این است که شما نیاز دارید ArrayList را به شکل زیر import کنید.


import java.util.ArrayList;


بنابر این شما چطور یک مقدار را به آن اضافه می کنید؟ در زیر می‌توانید ببینید چگونه این عمل انجام می شود.


Array.add(1);

می‌خواهید چیزی را از از ArrayList بردارید؟ خب مشکلی نیست در اینجا راه هایی برای این کار به شما نشان می دهیم.


Array.remove();


با این کار شما عنصر صفرم را از آرایه حذف می کنید.( به خاطر داشته باشید این به معنی عنصر اول در جاوا می باشد). اگر آن گزینه در وسط لیست قرار داشته باشد لیست به طور خودکار کوتاه می‌شود و به این شکل رخنه ای در داده‌های شما ایجاد نمی‌شود. شسته‌رفته بود نبود؟


چگونه می‌توانیم به یک عنصر ویژه دسترسی داشته باشیم؟ بسیار آسان است:


array.get(0);


پس از آنکه من ArrayList را کشف کردم تقریبآ کاملآ آرایه ها را کنار گذاشتم . زیرا لیست آرایه ها به طور باور‌نکردنی قدرتمند هستند.

هش ماپ را در اینجا بخونید

۱۳۸۹ دی ۱۰, جمعه

کلاس های bean

English
کلاس های bean ، کلاس هایی هستند نوشته شده با زبان برنامه نویسی جاوا ، که قابلیت استفاده مجدد را دارند. مورد استفاده آن ها برای نگه داشتن چندین object در یک object می باشد. بنابراین می توانند به عنوان یک object در بین متدهای مختلف استفاده شوند. یک کلاس bean یک object جاوا می باشد که می تواند ویژگی serializable را دارا باشد. دسترسی به متغیرهای خصوصی آن از طریق متدهای getter و setter می باشد.


یک کلاس جاوا در صورتی عنوان bean را می گیرد که از قوانینی که در مورد نام گذاری متدها و متغیرهاست تبعیت کند
قوانین:
- کلاس باید سازنده پیش فرض (بدون پارامتر ورودی) را داشته باشد این برای ساده تر کردن ایجاد کلاس می باشد
- متغیرها باید خصوصی باشند و دسترسی آن ها از طریق متدهای set و get می باشد و همچنین باید قواعد نام گذاری پیروی شود.
- کلاس می تواند ویژگی serializable را دارا باشد که به برنامه اجازه ذخیره مطمئن داده و بازیابی آٔن را می دهد.

مترجم : شایسته علوی

۱۳۸۹ آذر ۱۶, سه‌شنبه

اضافه کردن Help جاوا (API) به Add API to Netbeans


English


۰- پس از دانلود API از اینترنت آن را بر روی هارد ذخیره کنید

۱- نت بینز را باز کرده منو Tools را باز کنید

۲- از منو باز شده گزینه Java Platforms را انتخاب کنید.

۳- از پنجره باز شده تب Javadoc را باز کنید.

۴- سپس بر روی دکمه Add Zip/Folder کلیک کرده از پنجره باز شده مسیر فولدر داک را مشخص کنید و دوباره دکمه Add Zip/Folder را کلیک کنید.



برای استفاده از API جاوا ، نشانگر را بر روی کلمه دلخواه برده ، دکمه های Ctrl+Space را نگه دارید تا پنجره ی اطلاعات کاملی در مورد آن کلمه باز شود.


با سپاس از استاد شایسته علوی

۱۳۸۹ آذر ۱۰, چهارشنبه

کلاس Vector

کلاس وکتور در پکیج java.util قرار دارد

وکتور ها معمولآ به جای آرایه ها استفاده می‌شوند زیرا دامنه ی آن‌ها به طور خودکار با افزایش یک داده جدید افزایش می یابد. وکتور ها به ابعاد ثابتی احتیاج ندارند. اندازه وکتور با افزایش یا برداشت آیتم ها زیاد یا کم می شود. وکتور ها می‌توانند فقط اشیاء را نگهدارند و نه نوع های اولیه primitive types مثل int را. اگر می‌خواهید نوع های اولیه را در وکتور ها نگهدارید آن را داخل یک شی قرار دهید ( برای مثال برای ذخیره یک مقدار integer از کلاس Integer استفاده کنید یا اینکه کلاس خودتان را تعریف کنید) ، اگر از کلاس Integer استفاده کنید قادر نخواهید بود مقدار آن را تغییر دهید به این دلیل گاهی بهتر است کلاس خودتان را تعریف کنید. کلاس وکتور و کلاس‌های بالاتر آن شامل بسیاری متد های مفید می باشند. برای مثال برای اضافه کردن عناصر به وکتور از متد add استفاده کرد. برای اضافه کردن موقعیت های ثابت از متد add(index , object)I استفاده می‌شود، متد اضافه کردن یک عنصر addElement و متد clear همه عناصر را از وکتور پاک می‌کند.

برای خلق وکتور باید ابتدا یکی از پکیج های java.util.Vector یا java.util را وارد import کنید. و سپس به روش زیر آن را ایجاد کنید


Vector v = new Vector();

Vector v = new Vector(300);

برای اضافه کردن عنصر به وکتور

v.add(s); // adds s to the end of the Vector v

برای اطلاعات بیشتر اینجا را بخونید.


۱۳۸۹ مهر ۱۵, پنجشنبه

آموزش گام به گام جاوا : ۴

این بار می خواهیم با استفاده از IDE یک نرم افزار بسازیم
استفاده از IDE برنامه نویسی را راحت تر می کند و سرعت را افزایش می دهد. یکی از بهترین این IDE ها نت بینز است.

می خواهیم با استفاده از NetBeans IDE 6.8 یک پنجره (فریم) با یک یا چند دکمه بسازیم تا وقتی کاربر بر یکی از این دکمه ها کلیک می کند با گرفتن چند عدد از کاربر محاسباتی را انجام داده نتیجه را نمایش دهد مثلآ حجم استوانه را با گرفتن قطر و ارتفاع استوانه از کاربر، نمایش دهد.
خب شروع کنیم
۰- پس از نصب نت بینز آن را باز کنید
۱- از منو File گزینه New Project را انتخاب کنید.
۲- از پنجره باز شده دگمه Next را کلیک کنید.
۳- در پنجره باز شده نام پروژه را انتخاب کرده ، تیک Create Main Class را بردارید و دگمه Finish را کلیک کنید.
۴- در زیر منو پروژه بر روی default package کلیک راست کرده از منو باز شده گزینه New و از زیر منو باز شده گزینه Java Package را انتخاب کنبد
۵- در پنجره باز شده نام پکیج را انتخاب کرده ، دگمه Finish را کلیک کنید تا پکیج جدید ایجاد شود.
۶- بر روی پکیج ایجاد شده کلیک راست کرده از منو باز شده گزینه New و از منو باز شده گزینه JFrame form را انتخاب و در پنجره باز شده نام آن فرم را تعیین کنید و دگمه Finish را کلیک کنید.

خب تا اینجا ما با استفاده از امکانات نت بینز بدون حتی نوشتن یک کد یک فرم ساختیم از اینجا به بعد می خواهیم این فرم خام را تکمیل کنیم.

اگر بر روی منو Pallete سمت راست برویم و آن را باز کنیم مجموعه ای از ابزار ها مثل دگمه خواهیم دید که می توانیم به فرم اضافه کنیم اما قبل از هر کار یک Panel بر روی فرم اضافه کرده ابعاد آن را به اندازه فرم تنظیم می کنیم.
خب حالا می خواهیم برخی ویژگی ها را به این پنل بدهیم
۱- بر روی پنل کلیک راست کنید و از منو باز شده گزینه Customize Code را انتخاب کنید. سپس زیر جمله new عبارت زیر را تایپ کنید.
jPanel1.setBorder(BorderFactory.createTitledBorder("محاسبه حجم"));

با این کار شما با استفاده از متد setBorder یک بردر به پنل افزوده اید که عبارت ( محاسبه حجم ) عنوان این بردر است.
برای دیدن نتیجه کار بر روی آیکون چکش-جارو(clean and build) کلیک کنید تا فایل جر ساخته شود در این صورت پنجره ای باز شده از شما می خواهد اجازه دهید متد main برای اجرای برنامه ایجاد شود با کلیک بر دگمه OK به شما یک خطا اعلان می کند این به علت این است که شما برای ایجاد بردر باید پکیج مربوط را افزوده باشید پس به سر برگ Source مجاور سربرگ Design سمت چپ بالا بروید کد برنامه را مرور کنید تا به خطایی که به شکل قرمز مشخص شده برسید اگر بر روی آیکون لامپ با علامت تعجب قرمز کلیک کنید منویی باز می شود که پکیج فراموش شده را نشان می دهد بر روی اولین گزینه کلیک کنید تا با اضافه شدن پکیج علامت خطا بر طرف شود و سپس بر روی آیکون فلش سبز کلیک کنید تا برنامه اجرا شود.

خب همانطور که می بینید عنوان سمت چپ نوشته شده برای اینکه سمت راست نوشته شود باید از متد زیر استفاده کنید.

jPanel1.setComponentOrientation(ComponentOrientation.RIGHT_TO_LEFT);

به همان روش قبلی در سر برگ Design بروید ، بر روی پنل کلیک راست کنید و از منو باز شده گزینه Customize Code را انتخاب و جمله فوق را به آن بیفزایید. حال اگر دوباره سعی کنید برنامه را اجرا کنید با خطا روبرو می شوید باید به همان روش قبل به سر برگ Source بروید و پکیج مربوطه را اضافه کنید. درست مثل دفعه قبل.

با کلیک بر روی دکمه اجرا ایکون فلش سبز برنامه را اجرا کنید تا نتیجه را ببینید.

پس از آماده شدن پنل می توانیم یک دکمه به آن بیفزاییم تا کاربر بتواند با کلیک بر روی آن اطلاعات را وارد کرده و نرم افزارپس از انجام محاسبات ، نتیجه را نمایش دهد.

برای افزودن دکمه دوباره به Palette سمت راست رفته بر روی Button کلیک کنید و آن را به پنل بیفزایید. بر روی دکمه کلیک راست کنید و از منو باز شده اولین گزینه Edit Text را انتخاب کرده تا بتوانید نوشته روی دکمه را تغییر دهید. مثلآ بنویسید (استوانه) .

برای انجام محاسبات بهتر است در یک کلاس جداگانه متد هایی را که هر یک چیزی را محاسبه می کند داخل آن کلاس بنویسیم \. برای این منظور بر روی پکیجی که قبلآ ساختیم کلیک راست ، از منو باز شده گزینه New و از منو باز شده گزینه Java Class را انتخاب می کنیم.
در پنجره باز شده نام کلاس را انتخاب می کنیم مثلآ Calculate و دکمه Finish را کلیک می کنیم
کلاس ساخته شده را به صورت زیر کامل کنید

package com;


import javax.swing.JOptionPane;

/**
*
* @author kian
*/
public class Calculate {

public static void cylinderVolumeCalculate() throws NumberFormatException,NullPointerException{
String t = JOptionPane.showInputDialog("قطر استوانه را وارد کن", null);
String a = JOptionPane.showInputDialog("طول استوانه را وارد کن", null);

double T = Double.parseDouble(t);
double A = Double.parseDouble(a);

double V = 0.785 * T * T * A ;
JOptionPane.showMessageDialog(null, "حجم " + V);
}


}





کلاس فوق حجم استوانه را حساب می کند


حالا به کلاس قبلی به سر برگ Design رفته و بر روی دکمه کلیک راست کرده از منو باز شده گزینه Event و از منو باز شده گزینه Action و از منو باز شده گزینه actionPerformed را انتخاب کرده سپس در محل باز شده عبارت

Calculate.cylinderVolumeCalculate();
0

را تایپ کنید.


این عبارت متد cylinderVolumeCalculate() را از کلاس Calculate صدا می زند.

حالا برنامه را با کلیک بر روی دکمه Run ( فلش سبز رنگ) اجرا کنید.