מחלקה מופשטת

אחת התכונות שFPC 2.4.2 מביאה איתה הוא תמיכה ביצירת מחלקה שהיא abstract. כלומר אני יכול להגיד שמחלקה מסויימת היא בעצם סוג של API שכל מי שיורש ממנה צריך לממש בעצמו, אלא אם הוא גם class abstract משל עצמו.

הבעיה היא שהצוות של FPC לא המציא את הגישה אלא Embarcadero אחראים למחדל הזה – לפחות במימוש שלו.

אז למה אני אומר שזה מחדל ? ובכן המימוש שובר את הגישה של שפת פסקל ואת הרעיון של הקריאות שלה.

כאשר אין לי צורך לרשת כלום, התחביר הוא עוד הגיוני:

TMyAbstractClass = class abstract

אבל כאשר אני צריך לרשת והלגדיר מחלקה, זה כבר שובר את הלוגיקה וכבר לא קריא:

TMyInheritingAbstractClass = class abstract(TMyAbstractClass)

זה נראה כאילו abstract יורש, אבל למעשה class הוא מי שיורש. אני מרגיש כאילו מתכנתי ++C תכננו את התחביר הזה ולא מתכנתי פסקל. היות ובשפת ++C הם נלחמים ממש איך לגרום לדברים לא להיות קראים.

תבינו, ירושה רגילה נראת בצורה הזו:

TNormalInheritence = class(TMyInheritingAbstractClass)

אפשר בפירוש להבין שclass יורש מאב בשם TMyInheritingAbstractClass, אבל התחביר של class abstract גורם לך לעצור ולשאול בעצם מי יורש מה, האם abstract מסוגל לרשת ? ובכן לא הוא לא. אז הירושה הוא של class, אבל אם תנסו לשים ירושה "רגילה" ואז abstract המהדרים לא ידעו להתמודד עם זה.

כך שאני מקווה כי עכשיו ברור למה המימוש שלהם פשוט רע (ועוד אומרים לי שאני לא מעביר ביקורת על פסקל, למרות שיש כאן כמה פוסטים עם ביקורת על השפה).

מחשבה אחת על “מחלקה מופשטת

כתיבת תגובה

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

הלוגו של WordPress.com

אתה מגיב באמצעות חשבון WordPress.com שלך. לצאת מהמערכת / לשנות )

תמונת Twitter

אתה מגיב באמצעות חשבון Twitter שלך. לצאת מהמערכת / לשנות )

תמונת Facebook

אתה מגיב באמצעות חשבון Facebook שלך. לצאת מהמערכת / לשנות )

תמונת גוגל פלוס

אתה מגיב באמצעות חשבון Google+ שלך. לצאת מהמערכת / לשנות )

מתחבר ל-%s