۱۳۸۹ فروردین ۳۰, دوشنبه

زير مجموعه هاي متد

دو زير مجموعه متد به قرار زير است
Getter- متد هايي كه يك مقدار را از يك شي بر مي گردانند. مقادير اغلب مثل يك فيلد (ميدان) ساده در يك كلاس قرار دارند اما ممكن است همچنين زماني كه getter صدا مي شود ساخته شود.
قرار دادهاي نامگذاري : قرار دادهاي نامگذاري جاوا براي متد هاي getter بستگي به آن دارد كه آيا برگشتي متد بولي boolean هست يا نه.
boolean getter عمومآ با كلمات is يا has شروع مي شوند
if (x.isVisible())......
while (y.hasDescendants()).....
همه انواع ديگر getter ها با كلمه get شروع مي شوند مثل:
String greeting = z.getText()
متد هاي Setter مقدار يا ويژ ‍گي ها ي يك شي را تنظيم مي كند كه ممكن است به صورت يك فيلد پياده شده باشد ، اما مي تواند به روش هاي ديگر نيز پياده سازي شود.
مقدار برگشتي: نوعآ setter ها هيچ مقداري را بر نمي گردانند. اما دو راه براي برگرداندن مقدار وجود دارد
1- برگرداندن مقادير قديمي
2- برگرداندن شي كه setter هاي صدا شده بتوانند به آن زنجير شوند

۱۳۸۹ فروردین ۲۳, دوشنبه

آناتومي متد

1- قابليت ديدن

public - private - package - protected

private اگرنمي خواهيد كلاس هاي ديگر از اين متد استفاده كنند

package اگر از هيچ عبارتي پيش از متد استفاده نكنيد به طور معمول آن متد به كلاس هايي كه داخل همان پكيج هستند اجازه استفاده مي دهد.

protected از اين عبارت استفاده نكنيد مگر در حالتي كه بخواهيد زير كلاس ها آن را ببينند.

public به همه كلاس ها اجازه مي دهد آن را ببينند.


2- كلاس استاتيك يا متد نمونه

يك متد در صورتي بايد استاتيك اعلان شود كه متغير يا متد نمونه نباشد. يك متد استاتيكفقط از پارامتر ها ي متغير هاي محلي ، ثابت هاي استاتيك و ديگر متد هاي استاتيك در همان كلاس استفاده مي كند.

اگر لغت كليدي استاتيك از قلم بيفتد متد يك متد نمونه خواهد بود.

3- نوع برگشتي مثل double

4- پارامتر ها ، كه داخل پرانتز قرار مي گيرند

5- بدنه متد ، كه داخل آكولاد قرار مي گيرند و جملاتي است كه وقتي متد صدا مي شوند اجرا مي گردند

6- جمله بر گشتي Return

يك متد بعد از آنكه آنچه كه بايد انجام داد به سوي صدا كننده بر مي گردد. اگر متد مقداري را برگرداند ( void نباشد) بايد شامل جمله return كه مقدار برگشتي را ميدهد باشد و وقتي برنامه به جمله return مي رسد كنترل به صدا كننده متد مي رسد تا مقدار برگشتي را به آن بدهد
مقدار بر گشتي به دو صورت مي تواند نوشته شود
1- متد يك مقدار را بر مي گرداند مثل:
double M = kilometers * MPR;
return M;
2- يك جمله ( بيان) را برگرداند
return kilometers*MPR;

۱۳۸۹ فروردین ۱۶, دوشنبه

آرگومنت ها (پارامتر ها)

مقاديري كه در يك متد قرار داده مي شود در زبان جاوا آرگومنت ناميده مي شود
وقتي متدي را صدا مي زنيد مي توانيد اطلاعاتي را در آن قرار داده تا استفاده كنيد آرگومنت داخل پرانتز قرار مي گيرند. اگر بيش از يك رگومنت وجود داشته باشد مي تواميد آنها را با كاما از هم جدا كنيد
JOption Pane.showInputDialog(null,"Enter.....");
ارزيابي آرگومنت ها
آرگومنت ها از چپ به راست ارزيابي مي شوند.

چرا از متد ها استفاده مي كنيم

1- براي كد هاي تكراري
اگر مرتب نياز به انجام كاري هستيد مي توانيد يك متد براي آن بنويسيد تا آن كار را انجام دهد و در صورت نياز آن متد را صدا كنيد.
2- براي پارامتري كردن كد ها
در ادامه استفاده از كد هاي تكراري مي توانيد با استفاده از پارامتر ها مسيري را كه آن كار انجام مي گيرد را تغيير دهيد
3- براي خلق واحد هاي ادراكي
متد ها را ايجاد كنيد تا ايده ها يتان را اجرا كنيد
4- براي ساده سازي
از آنجاييكه متغير هاي محلي و جملات يك متد از خارج از متد قابل ديدن نيستند آنها و پيچيدگي شان از بقيه قسمت هاي برنامه پنهان است اين كار مانع خطاهاي تصادفي و اغتشاش برنامه مي شود.

نكاتي در مورد متد ها

كد هاي جاوا در متد ها نوشته مي شوند.
هر متد در داخل يك كلاس قرار مي گيرد.
هر متد يك نام دارد كه به حروف كوچك شروع مي شود و عمومآ يك فعل است زيرا كاري انجام مي دهد.
در زبان هاي برنامه نويسي ديگر متد ها به نام هاي
function
procedure
subroutine
خوانده مي شود.
يك متد ممكن است مقداري را برگرداند مثل
parseDouble
يا هيچ مقداري را بر نگرداند مثل
showMessageDialog


تشخيص متد ها:
هميشه متد ها با دو پرانتز چپ و راست پايان مي پذيرند كه ممكن است داخل پرانتز آرگومنت (پارامتر) باشد.
هرگاه در كد هاي جاوا پرانتز مشاهده كرديد كه قبل از آن نامي وجود داشت آن يا يك متد يا يك كانستراكتور( سازنده) مي باشد سازنده ها هم بسيار شبيه متد ها مي باشند.
بدنه متد داخل آكولاد قرار مي گيرند.
گاهي متد ها به دنبال كلاسي كه از آن مشتق مي شوند مي آيند كه بين كلاس و متد يك نقطه قرار دارد مثلآ در :

JOptionPane.showMessageDialog(.....);
متد showMessageDialog از كلاس JOptionPane مشتق شده است
يا در :
Double.ParseDouble(.....);
متد ParseDouble از كلاس Double مشتق شده است.
اگر نام كلاس را ذكر نكنيد متد فرض مي كند در كلاس جاري تعريف شده است.

۱۳۸۸ شهریور ۶, جمعه

اضافه کردن لوگو

با اضافه کردن کد زیر در فایل manifest.mf پس از اجرای برنامه چند لحظه عکس nacl که در مسیر
src/images کپی شده است به نمایش در می آید.
SplashScreen-Image: images/nacl.jpg

۱۳۸۸ تیر ۱۲, جمعه

تبدیل سانتی گراد به فارنهایت

این نرم افزار رو فارسی کرده وتغییرات کوچکی در آن ایجاد شده!

/*
* Copyright (c) 1995 - 2008 Sun Microsystems, Inc. All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
*
* - Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
*
* - Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
*
* - Neither the name of Sun Microsystems nor the names of its
* contributors may be used to endorse or promote products derived
* from this software without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
* IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
* THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
* PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
* EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
* PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
* PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
* LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
* NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/

/*
* CelsiusConverterGUI.java
*
*/

package learn;

import java.awt.event.ActionEvent;

public class CelsiusConverterGUI extends javax.swing.JFrame {

/** Creates new form CelsiusConverterGUI */
public CelsiusConverterGUI() {
initComponents();
}

/** This method is called from within the constructor to
* initialize the form.
* WARNING: Do NOT modify this code. The content of this method is
* always regenerated by the Form Editor.
*/
// //GEN-BEGIN:initComponents
private void initComponents() {
tempTextField = new javax.swing.JTextField();
celsiusLabel = new javax.swing.JLabel();
convertButton = new javax.swing.JButton();
fahrenheitLabel = new javax.swing.JLabel();

setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
setTitle("مبدل سانتی گراد");
setLocationRelativeTo(null);
celsiusLabel.setFont(new java.awt.Font("Tahoma", 0, 13));
celsiusLabel.setText("سانتی گراد");

convertButton.setFont(new java.awt.Font("Tahoma", 0, 13));
convertButton.setText("تبدیل");

convertButton.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
convertButtonActionPerformed(evt);

}
});

tempTextField.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
tempTextFieldActionPerformed(evt);

}

private void tempTextFieldActionPerformed(ActionEvent evt) {
int tempFahr = (int)((Double.parseDouble(tempTextField.getText()))
* 1.8 + 32);
fahrenheitLabel.setText(tempFahr + " فارنهایت");
}
});

fahrenheitLabel.setFont(new java.awt.Font("Tahoma", 0, 13));
fahrenheitLabel.setText("فارنهایت");


javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
getContentPane().setLayout(layout);
layout.setHorizontalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addContainerGap()
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addComponent(tempTextField, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(celsiusLabel))
.addGroup(layout.createSequentialGroup()
.addComponent(convertButton)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(fahrenheitLabel)))
.addContainerGap(27, Short.MAX_VALUE))
);

layout.linkSize(javax.swing.SwingConstants.HORIZONTAL, new java.awt.Component[] {convertButton, tempTextField});

layout.setVerticalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addContainerGap()
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(tempTextField, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(celsiusLabel))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(convertButton)
.addComponent(fahrenheitLabel))
.addContainerGap(21, Short.MAX_VALUE))
);
pack();
}//
//GEN-END:initComponents

private void convertButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_convertButtonActionPerformed
//Parse degrees Celsius as a double and convert to Fahrenheit
int tempFahr = (int)((Double.parseDouble(tempTextField.getText()))
* 1.8 + 32);
fahrenheitLabel.setText(tempFahr + " فارنهایت");
}//GEN-LAST:event_convertButtonActionPerformed

/**
* @param args the command line arguments
*/
public static void main(String args[]) {
java.awt.EventQueue.invokeLater(new Runnable() {
public void run() {
new CelsiusConverterGUI().setVisible(true);
}
});
}

// Variables declaration - do not modify//GEN-BEGIN:variables
private javax.swing.JLabel celsiusLabel;
private javax.swing.JButton convertButton;
private javax.swing.JLabel fahrenheitLabel;
private javax.swing.JTextField tempTextField;
// End of variables declaration//GEN-END:variables

}

0