PDA

View Full Version : سوال: تفاوت 2 کلاس زیر چیه



yegane8
شنبه 26 فروردین 1391, 00:28 صبح
سلام لطفا تفاوت این 2 کلاس رز برای من شرح دهید
1-
public class Welcome1
{
// main method begins execution of Java application
public static void main( String[] args )
{
System.out.println( "Welcome to Java Programming!" );
} // end method main
} // end class Welcome1
2-
public class GradeBook
{
// display a welcome message to the GradeBook user
public void displayMessage()
{ System.out.println( "Welcome to Java Programming!" );

} // end method displayMessage
} // end class GradeBook

sina_oonline
شنبه 26 فروردین 1391, 01:22 صبح
از چه نظر
در کل چیزی که بن نظر میاد فرق خاصی با هم ندارن فقط برنامه یک حاوی متد main هست که به عبارتی می تونه اجرا بشه (برنامه های جاوا از متد main اجرا میشن) اما دومی خودش نمی تونه اجرا بشه بلکه می تونه توی کلاس های دیگه نمونه سازی بشه و ...

M0TR!X
شنبه 26 فروردین 1391, 01:52 صبح
سلام.

خروجي هر دو كلاس يكسانه.ولي نكته اينجاست كه از كلاس اول نيازي به شي سازي نيست ولي كلاس دوم بايد ازش شي سازي بشه تا خرجي بده !

اگه نفهميدي بگو تا كامل توضيح بدم

yegane8
شنبه 26 فروردین 1391, 17:20 عصر
سلام.

خروجي هر دو كلاس يكسانه.ولي نكته اينجاست كه از كلاس اول نيازي به شي سازي نيست ولي كلاس دوم بايد ازش شي سازي بشه تا خرجي بده !

اگه نفهميدي بگو تا كامل توضيح بدم

مرسی
فهمیدم شما چی میگین ولی داشتن متد main جه مزیتی به اوون یکی داره ؟
یعنی اگه یه کلاس متد main داشته باشه دیگه نیاز به شی سازی نداره؟ اگه اینطوریه شی سازی نکردن چه مزیتی به اون کلاسی که باید اول ازش شی ساخت داره؟
اگه کامل توضیح بدین ممنون میشم.

spiderman200700
شنبه 26 فروردین 1391, 18:19 عصر
سلام.
با اجازه ی دوستان، من با یه مثال بهت توضیح میدم.

ببین، کلا توی جاوا نمیتونی برنامه ای رو اجرا کنی مگر اینکه Start اجرای برنامه، توی متد main زده بشه.
حالا اینStart چطوری زده میشه ، بسته به برنامه داره.
یه وقت میبینی ، کدهای اصلیه برنامه توی یه کلاسه، و متد main توی یه کلاس دیگه. در اینصورت داخل متد main حتما باید از کلاسی که کد های اصلی توشه شی بسازی.
مثل این برنامه.
public class Test {

public static void main(String args[]) {
Sample sample = new Sample();
System.out.println(sample.X * sample.Y);
System.out.println(sample.getXY());
}
}

class Sample {

public int X = 1024;
public int Y = 768;

public int getXY() {
return X * Y;
}
}

ولی یه موقع میبینی ، کد های اصلی توی همون کلاسیه که متد main داخلشه. در اینطور موارد، هم میتونی از اون کلاس شی بسازی ، هم میتونی شی نسازی.
ولی کی میتونی شی بسازی کی میتونی شی نسازی؟
اگه متغیر ها رو داخل متد main تعریف کنی،یا اگه خارج از متد main تعریف میکنی، به صورت static باشه و اگه متد هات هم به صورت static تعریف کرده باشی، میتونی دیگه از اون کلاس شی نسازی.
مثل این مثال:
public class Test {

public static int X = 1024;
public static int Y = 768;

public static int getXY() {
return X * Y;
}

public static void main(String args[]) {
System.out.println(X * Y);
System.out.println(getXY());
}
}

ولی اگه متد ها و متغیر ها static نباشن، حتما باید داخل متد main ، از اون کلاس شی بسازی.
مثل این مثال:
public class Test {

public int X = 1024;
public int Y = 768;

public int getXY() {
return X * Y;
}

public static void main(String args[]) {
Test test = new Test();
System.out.println(test.X * test.Y);
System.out.println(test.getXY());
}
}

امید وارم توضیحم کامل بوده باشه.

yegane8
شنبه 26 فروردین 1391, 19:56 عصر
سلام.
با اجازه ی دوستان، من با یه مثال بهت توضیح میدم.

ببین، کلا توی جاوا نمیتونی برنامه ای رو اجرا کنی مگر اینکه Start اجرای برنامه، توی متد main زده بشه.
حالا اینStart چطوری زده میشه ، بسته به برنامه داره.
یه وقت میبینی ، کدهای اصلیه برنامه توی یه کلاسه، و متد main توی یه کلاس دیگه. در اینصورت داخل متد main حتما باید از کلاسی که کد های اصلی توشه شی بسازی.
مثل این برنامه.
public class Test {

public static void main(String args[]) {
Sample sample = new Sample();
System.out.println(sample.X * sample.Y);
System.out.println(sample.getXY());
}
}

class Sample {

public int X = 1024;
public int Y = 768;

public int getXY() {
return X * Y;
}
}

ولی یه موقع میبینی ، کد های اصلی توی همون کلاسیه که متد main داخلشه. در اینطور موارد، هم میتونی از اون کلاس شی بسازی ، هم میتونی شی نسازی.
ولی کی میتونی شی بسازی کی میتونی شی نسازی؟
اگه متغیر ها رو داخل متد main تعریف کنی،یا اگه خارج از متد main تعریف میکنی، به صورت static باشه و اگه متد هات هم به صورت static تعریف کرده باشی، میتونی دیگه از اون کلاس شی نسازی.
مثل این مثال:
public class Test {

public static int X = 1024;
public static int Y = 768;

public static int getXY() {
return X * Y;
}

public static void main(String args[]) {
System.out.println(X * Y);
System.out.println(getXY());
}
}

ولی اگه متد ها و متغیر ها static نباشن، حتما باید داخل متد main ، از اون کلاس شی بسازی.
مثل این مثال:
public class Test {

public int X = 1024;
public int Y = 768;

public int getXY() {
return X * Y;
}

public static void main(String args[]) {
Test test = new Test();
System.out.println(test.X * test.Y);
System.out.println(test.getXY());
}
}

امید وارم توضیحم کامل بوده باشه.
مرسی از توضیحاتتون
این قسمت از توضیح تون را متوحه نشدم " کلا توی جاوا نمیتونی برنامه ای رو اجرا کنی مگر اینکه Start اجرای برنامه، توی متد main زده بشه"
با توجه به توضیحاتتون نباید برنامه ی دوم در سوال اول من به تنهایی اجرا شه چون متد main نداره ولی پس چرا اجرا می شه؟(در bluej)

spiderman200700
شنبه 26 فروردین 1391, 23:56 عصر
من با bluej کار نکردم ولی اگه برنامه ی دومتون توی bluej اجرا میشه، 100% خود bluej داره به صورت ضمنی ( فقط برای اجرا شدن برنامه) یه کلاس حاوی متد main برای برنامه میسازه و یه شی هم از کلاستون توی main میسازه. وگرنه غیر ممکنه که برنامه اجرا بشه. میتونید خودتون توی جاهای دیگه امتحان کنید.

البته اون جملم- " کلا توی جاوا نمیتونی برنامه ای رو اجرا کنی مگر اینکه Start اجرای برنامه، توی متد main زده بشه" - در مورد برنامه های JavaSE بود.در بقیه ی شرایط وضع فرق میکنه.

yegane8
یک شنبه 27 فروردین 1391, 20:31 عصر
بله امتحان کردم نشد
متشکرم