شما می توانید با ارسال ایمیل خود ، بصورت رایگان مشترک شده و از بروزسانی مطلع شوید.

ایمیل خود را وارد کنید:

اوراکل (ADF(Application Development Framework یک چارچوب(Framework)  کلی می باشد که برروی استانداردهای Java EE و تکنولوژی های Open Source جهت سادگی و پیاده سازی سریع تر برنامه های Java EE ایجاد شده است که کاملا توسعه پذیر و قابل تنظیم بوسیله افزودن یا اصلاح کتابخانه ها می باشد. ADF وظایف را از طریق ایجاد سرویس […]

CardLayout پنجره ای را در نظر بگیرید که شامل چندین پنل می باشد که در یک زمان فقط یکی از این پنل ها قابل مشاهده می باشد،با استفاده از کلاس java.awt.CardLayout شما می توانید کامپوننتی را ایجاد کنید که فقط یکی از این پنل ها را در یک زمان نمایش دهد، مانند شکل زیر: زمانی […]

اطلاعات سخت افزاری CPU اطلاعات CPU شامل جزئیاتی  مثل معماری ، نام سازنده ، مدل ، تعداد هسته ها ، سرعت هرکدام از هسته ها و غیره است. برای دسترسی به چنین جزئیاتی درباره سخت افزار CPU در لینوکس، تعداد بسیار اندکی کامند برای این منظور وجود دارد که ما در اینجا بطور مختصر تعدادی […]

مثالی دیگر از واسط ها(interfaces) و ارث بری(inheritance)

در این بخش قصد داریم در دو قسمت نحوه استفاده از واسط ها و ارث بری را مورد بررسی قرار دهیم.

مثال قدم به قدم

قسمت اول

۱_در Eclipse پروژه Lesson6 مربوط به بخش مثال کاربردی از واسط ها و ارث بری را دانلود کرده و کلاس های زیر را به آن اضافه کنید.

۲_کلاسی بنام  ForeignContractor ایجاد کنید. همانطور که در کد زیر نشان داده شده است.توجه کنید که این کلاس واسط Payble را پیاده سازی نکرده است:

public class ForeignContractor extends Person {
	public ForeignContractor(String name){
	super(name);
	}
	public boolean increasePay(int percent) {
	System.out.println("I’m just a foreign worker");
	return true;
	}
	}

۳_کلاس TestPayIncreasePolyError را ایجاد کنید، و کد زیر را وارد نمایید:

public class TestPayIncreasePolyError {
	public static void main(String[] args) {
	Person workers[] = new Person[3];
	workers[0] = new Employee("Saeed");
	workers[1] = new Contractor("Amir");
	workers[2] = new ForeignContractor("Reza");
	for (Person p: workers){
	((Payable)p).increasePay(30);
	                         }
	              }
	}

۴_برنامه TestPayIncreasePolyError را اجرا کنید.همانطور که نمای کنسول خروجی را مشاهده می کنید، شما خطای زمان اجرای java.lang.ClassCastException را برروی سومین عنصر از آرایه دریافت خواهید کرد:

۵_کد TestPayIncreasePolyError را اصلاح کنید، نوع آرایه را از Person به  Payble تغییر دهید و نوع متغییر حلقه را بر این اساس تغییر دهید:

public class TestPayIncreasePolyError {
	public static void main(String[] args) {
	Payable workers[] = new Payable[3];
	workers[0] = new Employee("Saeed");
	workers[1] = new Contractor("Amir");
	workers[2] = new ForeignContractor("Reza");
	for (Payable p: workers){
	((Payable)p).increasePay(30);
	                         }
	              }
	}

۶_همانطور که مشاهده می کنید شما یک خطای کامپایلر جاوا دریافت می کنید، و حتی برای اضافه کردن نمونه ای از کلاس ForeignContractor به آرایه از شما جلوگیری می کند،زیرا Payble را پیاده سازی نکرده است.

کد پروژه Eclipse  مثال بالا را می توانید از لینک زیر دانلود کنید:

قسمت دوم

۱_در Eclipse IDE یک پروژه بنام Lesson7 ایجاد کنید.

۲_واسط Payble را مانند زیر وارد نمایید :

public interface Payable {
	int INCREASE_CAP = 20;
	boolean increasePay(int percent);
}

۳_کلاس Employee را مانند زیر ایجاد کنید :

public class Employee implements Payable{
	private String name;
	public Employee(String name){
	this.name=name;
	}
	public boolean increasePay(int percent) {
	System.out.println("Increasing salary by " + percent
	+ "%: " + name);
	return true;
	}
	}

۴_ کلاس Contractor را  هم مانند زیر ایجاد کنید :

public class Contractor implements Payable {
	private String name;
	public Contractor(String name){
	this.name=name;
	}
	public boolean increasePay(int percent) {
	if(percent < Payable.INCREASE_CAP){
	System.out.println("Increasing hourly rate by " +
	percent + "%. ");
	return true;
	} else {
	System.out.println("Sorry, can’t increase hourly rate by more than "
	 + Payable.INCREASE_CAP + "%: " + name);
	return false;
	}
}
}

توجه کنید که هیچ یک از کلاس های Employee و Contractor کلاس Person را خیلی طولانی ادامه ندادند،هردو کلاس ها برای ادامه دادن دیگر کلاس ها آزادند،اما از طرف دیگر هریک از آنها بایستی نام متغییر و متد getName() را که یک بار در کلاس Person انجام شده بود را تعریف کنند.

۵_یک کلاس بنام TestPayIncreaseInterface ایجاد کنید :

public class TestPayIncreaseInterface {
	public static void main(String[] args) {
	Payable workers[] = new Payable [3];
	workers[0] = new Employee("Saeed");
	workers[1] = new Contractor("Amir");
	workers[2] = new Employee("Reza");
	for (Payable p: workers){
	((Payable)p).increasePay(30);
		}
	}
}

۶_این برنامه را اجرا کنید__خروجی زیر را بایستی تولید کند :

Increasing salary by 30%: Saeed

Sorry, can’t increase hourly rate by more than 20%: Amir

Increasing salary by 30%: Reza

کد پروژه Eclipse این مثال  را می توانید از لینک زیر دانلود کنید:

دیدگاه خود را به ما بگویید.