ג'אווה Java

שפת Java

כללי

שפת Java פותחה על ידי חברת Sun. כיום החברה נרכשה על ידי Oracle. השפה מבוססת C++‎, היא שפה מוכוונת עצמים וגם מוכוונת רשת. שפה זו יכולה לרוץ בפלטפורמות שונות כאשר כותבים קוד אחד בלבד. ביצועים אשר אינם קשורים לרשת, עדיפים בשפת C++‎.

מרכיבי השפה

ב Java ישנה גם ערכת פיתוח ג'אווה הנקראת JDK ‏(Java Development Kit) הכוללת ספריות של Java. הגירסה בה נשתמש היא JDK6 ‏(JDK 1.6) והיא האחרונה אותה הפיצה חברת Sun. חבילת JDK כוללת גם את JRE ‏(Java Runtime Environment) שהיא סביבת הרצה המיועדת למשתמשי Java אשר אינם מפתחי Java. בתהליך כתיבת התוכנית, קוד ה Java ‏(‎*.java) מהודר ל Byte Code ‏(‎*.class) ו ה JVM ‏(Java Virtual Machine) מפרש את שורות הקוד ומריצן. ערכת פיתוח התוכנה SDK ‏(Software Development Kit) מורכבת אם כן מסביבת פיתוח משולבת IDE ‏(Integrated Development Environment) יחד עם ערכת פיתוח ג'אווה JDK.

סביבת הפיתוח

סביבת הפיתוח Eclipse פותחה על ידי חברת IBM.

הורדת והתקנת סביבת הפיתוח

הורדת Eclipse Classic 3.5.1: בעזרת מנוע Google מגיעים אל Eclipse Downloads בכתובת: http://www.eclipse.org/downloads/‎ ומורידים לתיקיית ה Java הרצויה. יוצרים עבור הקובץ eclipse.exe אשר בתיקיית ה eclipse קיצור דרך על שולחן העבודה.

הורדת והתקנת ערכת הפיתוח של ג'אווה

התקנת JDK 1.6: בעזרת מנוע Google מגיעים אל Java SE 6.0 ‏(Java Standard Edition 6.0) בכתובת: http://www.sun.com/javase/downloads/index.jsp מורידים ומתקינים את JDK.

בניית תוכנית על סביבת הפיתוח

שימוש ב Eclipse: מפעילים את קיצור הדרך אל eclipse ובוחרים את תיקיית מרחב העבודה work space. לאחר הפעלה ראשונה ניתן לשנות את מרחב העבודה באמצעות התפריט File → Switch Workspace → Other → Path Name → OK. בוחרים שם עבור הפרויקט באמצעות התפריט File → New → Java Project → Project Name → Finish.

יוצרים חבילה באמצעות התפריט File → New → Package → Name → Finish או על ידי קליק תפריט על src → New → Package → Name → Finish. מוסכם כי שם החבילה יתחיל באות זעירה.

בתוך החבילה יוצרים מחלקות על ידי סימון המחלקה ובאמצעות התפריט File → New → Class → Name → Finish או על ידי קליק תפריט על החבילה למשל myPackage → New → Class → Name → Finish. מוסכם כי שם המחלקה יתחיל באות רבתי.

סוגים של נתונים

סוגים של נתונים
סוג מס' בתים ערכים
char 2 בתים ‪'A'→'Z', 'a'→'z', '0'→'9'‬, תוים נוספים
byte 1 בית או 8 סיביות במספרים לא מכוונים: ‪0→255‬ או במספרים מכוונים: ‪-128→127‬
short 2 בתים או 16 סיביות במספרים לא מכוונים: ‪0→65,535‬ או במספרים מכוונים: ‪-32768→32767‬
int 4 בתים או 32 סיביות

במספרים לא מכוונים: ‪0→4,294,967,295‬

במספרים מכוונים: ‪-2,147,483,648→2,147,483,647‬

4 מיליארד, 294 מיליון, 967 אלף ו 296 צירופים שונים.

long 8 בתים או 64 סיביות

במספרים לא מכוונים: ‪0→18,446,744,073,709,551,615‬

במספרים מכוונים: ‪-9,223,372,036,854,775,808→9,223,372,036,854,775,807‬

18 טריליון, 446 בליארד, 744 ביליון, 73 מיליארד, 709 מיליון, 551 אלף ו 616 צירופים שונים.

float 4 בתים או 32 סיביות מספר ממשי
double 8 בתים או 64 סיביות מספר ממשי
boolean 1 byte true, false

הגבלת גישה

הגבלת גישה
סוג ההגבלה תאור
private מאפשר גישה רק לשיטות של אותה המחלקה.
protected מאפשר גישה לשיטות אותה המחלקה וגם לשיטות היורשות של המחלקה.
package מאפשר גישה לכל השיטות בחבילה זו וגם לשיטות היורשות מהן. זוהי גם ברירת המחדל.
public מאפשר גישה לכל השיטות.

קוד שפת ג'אווה

קוד שפת ג'אווה
מטרה קוד
הגדרת מחלקה

	class person
	{
		int pid;
		int pdate;
		String pname;

		void insert (int id,int date,String name)
		{
			pid = id;
			pdate = date;
			pname = name;
		}
	}
נתינת שם לעצם אחד או יותר
	<שם מחלקה>‎ <עצם>;
	person p1;

	<שם מחלקה>‎ <שם העצם>,‎ <שם העצם>;
	person p1, p2;
הקצאת זכרון לעצם
	<שם העצם> = new <שם מחלקה>();
	p1 = new person();
נתינת שם לעצם והקצאת זכרון במשולב
	<שם מחלקה> ‎<שם העצם> = new <שם מחלקה>();
	person p1 = new person();
נתינת שם למערך עצמים
	<שם מחלקה>‎ <שם המערך>‎[גודל המערך];
	person p[];
הקצאת זכרון למצביעי המערך
	<שם המערך> = new <שם מחלקה>‎[גודל המערך];
	p = new person[2];
הקצאת זכרון לאברי המערך
	<עצם>‎[מפתח המערך] = new <שם מחלקה>();
	person p[0] = new person();
	person p[1] = new person();
נתינת שם למערך עצמים במשולב עם הקצאת זכרון למצביעיו. הקצאת הזכרון לאברי המערך תתבצע בנפרד
	<שם מחלקה>‎ <שם מערך>[] = new <שם מחלקה>‎[גודל המערך];‎
	<עצם>‎[מפתח המערך] = new <שם מחלקה>();
	person p[] = new person[2];
	p[0] = new person();
	p[1] = new person();

בנאי


	class car
	{
		private String model;
		private int number;
		private int year;

		public car(String m,int n,int y)
		{
			model = m;
			number = n;
			year = y;
		}
	}

mainApp.java


package myMain;

import java.util.LinkedList;

import myPackage.Airplane;
import myPackage.Bicycle;
import myPackage.Car;
import myPackage.RacingCar;
import myPackage.Vehicle;

public class MainApp {

	public static void main(String[] args) {
		LinkedList linked = new LinkedList();
		linked.add(new Bicycle("Peugeot", 1000, 18));
		linked.add(new Airplane("Boeing", 1000000, 600));
		linked.add(new Car("Renault", 600000, 5));
		linked.add(new RacingCar("Porsche", 800000, 1, 230));
		linked.add(new RacingCar("Lamborghini", 230000, 1, 230));
		for (int i = 0; i < linked.size(); i++) {
			linked.get(i).show();
		}
		System.out.println("---------------------");
		System.out.println("Total Vehicles: " + linked.size());

		int max = 0;
		int count = 0;
		for (int i = 0; i < linked.size(); i++) {
			if (linked.get(i).getPrice() == max) {
				count++;
			} else if (linked.get(i).getPrice() > max) {
				max = linked.get(i).getPrice();
				count = 1;
			}
		}
		System.out.print("Most Expensive:");
		for (int i = 0; i < linked.size(); i++) {
			if (linked.get(i).getPrice() == max) {
				System.out.print(" " + linked.get(i).getName());
				if (--count != 0)
					System.out.print(",");
				else
					System.out.print(".");
			}
		}
		System.out.println("");
		max = 0;
		count = 0;
		for (int i = 0; i < linked.size(); i++) {
			if (linked.get(i) instanceof RacingCar) {
				if (((RacingCar) linked.get(i)).getMaxSpeed() == max) {
					count++;
				} else if (((RacingCar) linked.get(i)).getMaxSpeed() > max) {
					max = ((RacingCar) linked.get(i)).getMaxSpeed();
					count = 1;
				}
			}
		}
		System.out.print("Fastest Racing Car:");
		for (int i = 0; i < linked.size(); i++) {
			if (linked.get(i) instanceof RacingCar) {
				if (((RacingCar) linked.get(i)).getMaxSpeed() == max) {
					System.out.print(" " + linked.get(i).getName());
					if (--count != 0)
						System.out.print(",");
					else
						System.out.print(".");
				}
			}
		}
		System.out.println("");
		System.out.println("---------------------");
	}
}

Vehicle.java


package myPackage;

public abstract class Vehicle {
	protected String name;
	protected int price;

	public Vehicle(String name, int price) {
		this.name = name;
		this.price = price;
	}

	public void show() {
		System.out.println("---------------------");
		System.out.println("Name: " + this.name);
		System.out.println("Price: " + this.price);
	}

	public String getName() {
		return name;
	}

	public void setName(String name) {
		this.name = name;
	}

	public int getPrice() {
		return price;
	}

	public void setPrice(int price) {
		this.price = price;
	}
}

Bicycle.java


package myPackage;

public class Bicycle extends Vehicle {
	protected int gear;

	public Bicycle(String name, int price, int gear) {
		super(name, price);
		this.gear = gear;
	}

	public void show() {
		super.show();
		System.out.println("Gear: " + this.gear);
	}

	public int getGear() {
		return gear;
	}

	public void setGear(int gear) {
		this.gear = gear;
	}
}

Airplane.java


package myPackage;

public class Airplane extends Vehicle {
	protected int seat;

	public Airplane(String name, int price, int seat) {
		super(name, price);
		this.seat = seat;
	}

	public void show() {
		super.show();
		System.out.println("Seat: " + this.seat);
	}

	public int getSeat() {
		return seat;
	}

	public void setSeat(int seat) {
		this.seat = seat;
	}
}

Car.java


package myPackage;

public class Car extends Vehicle {
	protected int door;

	public Car(String name, int price, int door) {
		super(name, price);
		this.door = door;
	}

	public void show() {
		super.show();
		System.out.println("Door: " + this.door);
	}

	public int getDoor() {
		return door;
	}

	public void setDoor(int door) {
		this.door = door;
	}
}

RacingCar.java


package myPackage;

public class RacingCar extends Car {
	protected int maxSpeed;

	public RacingCar(String name, int price, int door, int maxSpeed) {
		super(name, price, door);
		this.maxSpeed = maxSpeed;
	}

	public void show() {
		super.show();
		System.out.println("Max Speed: " + this.maxSpeed);
	}

	public int getMaxSpeed() {
		return maxSpeed;
	}

	public void setMaxSpeed(int maxSpeed) {
		this.maxSpeed = maxSpeed;
	}
}