ההפשטה היא אחת מהמושגים המרכזיים בתכנות מונה עצמים. ההפשטה מגדירה מודל ליצירת רכיבי אפליקציה. היישום של ההפשטה תלוי בתכונות ובתהליכים המיוחדים לשפה.
1. מהו ההפשטה?
ההפשטה היא התהליך שבו נסתיר את הפרטים הפנימיים של אפליקציה מהעולם החיצוני. ההפשטה משמשת לתיאור דברים במונחים פשוטים. היא מיועדת ליצור גבול בין האפליקציה ותוכניות הלקוח.
2. הפשטה בחיים האמיתיים
ההפשטה נמצאת בכמעט כל המכונות בחיי היומיום.
- המכונית שלך היא דוגמה טובה להפשטה. ניתן להתחיל את פעולת המכונית על ידי סיבוב המפתח או לחיצה על כפתור ההתחלה. אין צורך לדעת כיצד המנוע מתחיל, אילו רכיבים יש במכונית שלך. היישום הפנימי של המכונית והלוגיקה המורכבת מוסתרים לחלוטין מהמשתמש.
- אנחנו יכולים לחמם את האוכל שלנו במיקרוגל. אנחנו לוחצים על כפתורים כדי לקבוע את הטיימר וסוג האוכל. בסופו של דבר, אנחנו מקבלים ארוחה חמה וטעימה. פרטי המיקרוגל מוסתרים מאיתנו. ניתנה לנו גישה לפונקציות בדרך פשוטה מאוד.
3. הפרטנות ב-OOPS
אובייקטים הם לבני הבניה של תכנות מונחה עצמים. אובייקט מכיל מאפיינים ושיטות. אנו יכולים להסתיר אותם מהעולם החיצוני דרך מודיפי גישה. אנו יכולים לספק גישה רק לפונקציות ולמאפיינים הנדרשים לתוכניות אחרות. זהו הליך הכללי ליישום הפרטנות ב-OOPS.
4. אילו סוגים של הפרטנות קיימים?
ישנם שני סוגים של הפרטנות.
- הפרטנות נתונים
- הפרטנות תהליכים
4.1) הפרטנות נתונים
כשהמידע של האובייקט אינו נראה לעולם החיצוני, זה יוצר הפרטנות נתונים. אם נדרש, ניתן גישה למידע של האובייקט דרך שיטות מסוימות.

4.2) הפרטנות תהליכים
אנו לא צריכים לספק פרטים על כל פונקציה של אובייקט. כשאנו מסתירים את היישום הפנימי של הפונקציות השונות שמעורבות בפעולה של משתמש, זה יוצר הסתרת תהליכים.

5. התרסה ב-Java
התרסה ב-Java מיושמת דרך ממשקים ו- מחלקות אבסטרקטיות. הן משמשות ליצירת יישום בסיס או חוזה למחלקות היישום הממשיות. Car.java: ממשק בסיס או מחלקה אבסטרקטית
package com.journaldev.oops.abstraction;
public interface Car {
void turnOnCar();
void turnOffCar();
String getCarType();
}
ManualCar.java, AutomaticCar.java: מחלקות היישום של Car.
package com.journaldev.oops.abstraction;
public class ManualCar implements Car {
private String carType = "Manual";
@Override
public void turnOnCar() {
System.out.println("turn on the manual car");
}
@Override
public void turnOffCar() {
System.out.println("turn off the manual car");
}
@Override
public String getCarType() {
return this.carType;
}
}
package com.journaldev.oops.abstraction;
public class AutomaticCar implements Car {
private String carType = "Automatic";
@Override
public void turnOnCar() {
System.out.println("turn on the automatic car");
}
@Override
public void turnOffCar() {
System.out.println("turn off the automatic car");
}
@Override
public String getCarType() {
return this.carType;
}
}
תוכנית משתמש: בואו נסתכל על תוכנית מבחן בה יועשה שימוש בפונקציות של Car.
package com.journaldev.oops.abstraction;
public class CarTest {
public static void main(String[] args) {
Car car1 = new ManualCar();
Car car2 = new AutomaticCar();
car1.turnOnCar();
car1.turnOffCar();
System.out.println(car1.getCarType());
car2.turnOnCar();
car2.turnOffCar();
System.out.println(car2.getCarType());
}
}
התוכנית לקוח יודעת רק על Car והפונקציות ש-Car מספקת. פרטי היישום הפנימיים מוסתרים מהתוכנית לקוח. הפניות: ויקיפדיה, מסמכי Oracle
Source:
https://www.digitalocean.com/community/tutorials/what-is-abstraction-in-oops