מילון מונחים

מילון מונחים ב-Java

אוסף מסודר של מונחים שקיבלנו לאורך הקורס - שימושי כמקור עיון מהיר.

JVM / JRE / JDK

מונח פירוש מה כולל
JVM Java Virtual Machine המנוע שמריץ bytecode
JRE Java Runtime Environment JVM + ספריות הליבה
JDK Java Development Kit JRE + קומפיילר + כלי פיתוח

אנלוגיה: JVM = מנוע, JRE = מכונית, JDK = מוסך.

Bytecode

הקוד שהקומפיילר יוצר. לא קוד מכונה רגיל, אלא "ביניים" שה-JVM מתרגם לקוד מכונה של המערכת שעליה הוא רץ. זה מה שמאפשר ל-Java להיות "כתוב פעם אחת, רץ בכל מקום".

Class

מחלקה - יחידת הבנייה הבסיסית ב-Java. תבנית שמתארת מבנה של אובייקט.

Object / Instance

אובייקט או מופע - ישות שנוצרה לפי תבנית של מחלקה. אם Person היא מחלקה, אז new Person("דוד", 30) הוא אובייקט.

Field

שדה - משתנה שמוגדר בתוך מחלקה. יכול להיות של אובייקט או של המחלקה עצמה (static).

Method

מתודה - פונקציה שמוגדרת בתוך מחלקה. דרך הפעולה של המחלקה.

Constructor

בנאי - מתודה מיוחדת שרצה כשאובייקט נוצר. שמה זהה לשם המחלקה, אין לה טיפוס חזרה.

this

הפנייה לאובייקט הנוכחי - "אני". שימושי כדי להתייחס לשדות של המחלקה.

static

מילת מפתח שמציינת שמשהו שייך למחלקה עצמה, לא לאובייקט ספציפי. משותף לכל האובייקטים.

final

מילת מפתח שמונעת שינוי: - final int x = 5; - קבוע - final class C - אי אפשר לרשת - final void method() - אי אפשר לדרוס

public / private / protected

מילות נגישות: - public - נגיש מכל מקום - private - נגיש רק מתוך המחלקה - protected - נגיש למחלקה, לתת-מחלקות, ולאותה חבילה - ללא - package-private

Package

חבילה - תיקייה של מחלקות. משמשת לארגון הקוד. מצוין בראש הקובץ: package com.example.app;

Import

ייבוא - אומר לקומפיילר מאיפה לטעון מחלקות: import java.util.Scanner;

Interface

ממשק - "חוזה" שמחלקה יכולה לממש. מגדיר מתודות בלי לממש אותן.

public interface Drawable {
    void draw();
}

public class Circle implements Drawable {
    public void draw() { /* ... */ }
}

Abstract

מחלקה מופשטת - מחלקה שאי אפשר ליצור ממנה אובייקט ישירות. משמשת כבסיס לרשת ממנה.

public abstract class Shape {
    abstract void draw();
}

Inheritance - ירושה

מנגנון שמאפשר למחלקה לרשת מאפיינים ממחלקה אחרת. extends:

public class Dog extends Animal { }

Polymorphism - פולימורפיזם

היכולת של אובייקט להופיע בצורות שונות. אותה קריאה למתודה יכולה להתנהג שונה באובייקטים שונים.

Encapsulation - הסתרה

הסתרת הפרטים הפנימיים של אובייקט. גישה רק דרך מתודות ציבוריות.

Overloading - העמסה

שתי מתודות באותו שם עם פרמטרים שונים.

int add(int a, int b) { }
double add(double a, double b) { }

Overriding - דריסה

תת-מחלקה מציעה מימוש חדש למתודה שירשה. מסומן ב-@Override.

@Override
public String toString() { return "..."; }

Immutable

אובייקט שלא ניתן לשנות אחרי יצירתו. דוגמה קלאסית: String.

null

"אין הפנייה". משמש לציון היעדר אובייקט. ניסיון להשתמש בהפנייה null יזרוק NullPointerException.

Exception

חריגה - אירוע חריג בזמן הריצה. אפשר לתפוס עם try/catch.

Stack / Heap

שני אזורי זיכרון: - Stack - משתנים מקומיים, פרימיטיביים, מסגרות של פונקציות - Heap - כל האובייקטים שנוצרים עם new

Garbage Collector (GC)

רכיב של ה-JVM שאוסף אובייקטים שלא משתמשים בהם יותר ומשחרר את הזיכרון שלהם.

Primitive Type

טיפוס פרימיטיבי - טיפוס בסיסי שלא אובייקט: int, double, char, boolean ועוד (8 בסך הכל).

Wrapper Class

מחלקה עוטפת - גרסת-אובייקט של טיפוס פרימיטיבי: Integer, Double, Character וכו'.

Generics

מנגנון שמאפשר להגדיר טיפוסים "כלליים" שהמשתמש ממלא: List<String>, Map<String, Integer>.

Collection

מבנה נתונים שמכיל קבוצה של אובייקטים: List, Set, Map.

Array

מערך - רצף של ערכים מאותו טיפוס באורך קבוע.

String

מחלקה שמייצגת טקסט. Immutable.

StringBuilder

מחלקה יעילה לבניית מחרוזות. Mutable.

Scanner

מחלקה לקריאת קלט מהמשתמש או מקבצים.

System.out

זרם הפלט הסטנדרטי (המסך).

main

המתודה שה-JVM מחפש כדי להתחיל את התוכנית:

public static void main(String[] args)

return

יציאה ממתודה, אפשר עם ערך שיוחזר.

break / continue

  • break - יציאה מלולאה או switch
  • continue - דילוג לאיטרציה הבאה בלולאה

instanceof

בודק אם אובייקט הוא מופע של מחלקה מסוימת:

if (obj instanceof Dog) { }

Cast

המרה בין טיפוסים:

double d = 3.14;
int i = (int) d;   // 3

IDE

Integrated Development Environment - סביבת פיתוח משולבת. למשל IntelliJ IDEA, Eclipse, VS Code.

Maven / Gradle

כלי בנייה וניהול תלויות ל-Java.

Javadoc

תיעוד של קוד Java בפורמט מיוחד:

/**
 * מתאר את המתודה
 * @param name הפרמטר
 * @return הערך המוחזר
 */

סיימנו!

זהו סוף הקורס. עברנו מהבסיס ועד לנושאים מתקדמים:

  • מבנה תוכנית Java
  • טיפוסים, מחרוזות ואופרטורים
  • בקרת זרימה ולולאות
  • מערכים ואוספים
  • פונקציות ואובייקטים
  • רקורסיה, קבצים וחריגות

הצעד הבא - תרגול! בנו פרויקטים קטנים, פתרו בעיות אלגוריתמיות, בנו משחקים פשוטים. Java נלמדת הכי טוב דרך כתיבה.

בהצלחה!

בדקו את עצמכם

נסו לענות לבד לפני שאתם פותחים את התשובה.

  1. מה זה polymorphism?

    1. היכולת להתייחס לאובייקטים ממחלקות שונות דרך טיפוס משותף
    2. שגיאת קומפילציה
    3. מחלקה עם הרבה שדות
    4. סוג של לולאה
    הצגת התשובה

    תשובה א. למשל רשימה של Shape שמכילה Circle ו-Square, וכל אחד מחשב area() בדרכו.

  2. מה זה ירושה (inheritance)?

    1. ממשק גרפי
    2. העתקת קובץ
    3. מחלקה שמקבלת שדות ומתודות ממחלקה אחרת עם extends
    4. משתנה גלובלי
    הצגת התשובה

    תשובה ג. המחלקה היורשת מקבלת את מה שיש בהורה ויכולה להוסיף או לשנות.