PracticU

השוואה בין #C לבין JAVA

בלי כתוביותעם כתוביות
PracticU › קורס פיתוח אפליקציות - לאנדרואיד - Android - ב-JAVA › השוואה בין #C לבין JAVA
מילון מושגים:
Java - שפת תכנות עילית ומונחית עצמים, הרצה על מכונה וירטואלית (JVM) ומשמשת לפיתוח מגוון יישומים.
C# - שפת תכנות מונחית עצמים של מיקרוסופט, המשמשת בעיקר לפיתוח יישומים על פלטפורמת .NET.
בוליאני - סוג נתונים שיכול לקבל אחד משני ערכים בלבד: אמת (true) או שקר (false).
Namespace - מרחב שמות שמקבץ שמות של טיפוסים ורכיבים ומונע התנגשות בין שמות זהים בחלקים שונים של הקוד.
בנאי - מתודה מיוחדת שמופעלת אוטומטית בעת יצירת אובייקט ממחלקה, ומאתחלת את ערכיו ההתחלתיים.
מתודה - פונקציה המוגדרת בתוך מחלקה ומתארת פעולה שאובייקטים מאותה מחלקה יכולים לבצע.
אופרטור - סימן בקוד שמבצע פעולה על ערכים, כמו חיבור, השוואה או פעולה לוגית.
תחביר - אוסף הכללים של שפת תכנות הקובעים כיצד לכתוב קוד תקין. הפרתם גורמת לשגיאת תחביר.

השוואה בין #C לבין JAVA
פיתוח לאנדרואיד נעשה ב-Java, ומי שמכיר C# או שפה מונחית עצמים אחרת יכול להסתדר בקלות. ההרצאה עוברת על ההבדלים המרכזיים בין C# ל-Java.
ההבדלים העיקריים
1. קבצי מקור: ב-C# הסיומת היא .cs ואפשר לשים מחלקה בכל קובץ. ב-Java הסיומת היא .java, ומחלקה ראשית (Top Level Class) חייבת לשבת בקובץ בשם המחלקה, למשל Cat.java.
2. סגנון כתיבה: ב-Java נהוג לפתוח סוגריים מסולסלים באותה שורה של הכותרת. שמות משתנים ופונקציות מתחילים באות קטנה (ב-C# הפונקציות באות גדולה). מרחב שמות נקרא package וכל אותיותיו קטנות.
3. טיפוסים מובנים: ב-C# יש byte, sbyte, short, ushort, int, uint, long, ulong, float, double, decimal, bool, char, string, object. ב-Java הטיפוסים הפרימיטיביים הם byte, short, int, long, float, double, boolean, char. ל-String ול-Object ב-Java יש תמיד אות גדולה והם לא פרימיטיביים.
4. השוואת מחרוזות: ב-C# אפשר להשתמש ב-==. ב-Java (בגרסה של אנדרואיד באותו זמן) משתמשים ב-str1.equals(str2).
5. לולאת foreach: ב-C# foreach (int item in collection), וב-Java for (int item : collection).
6. Namespace ו-import: ב-C# using, וב-Java package ו-import, למשל import zoo.wild.animals.*. ב-Java אפשר גם לייבא מחלקה אחת, למשל import zoo.wild.animals.Lion. ב-C# אי אפשר.
7. הרשאות גישה: בלי הרשאה, ב-C# רק המחלקה גולשת. ב-Java הרשאת ברירת המחדל מאפשרת גישה גם ממחלקות באותו package. private זהה בשתיהן. protected ב-Java מאפשר גם גישה מכל מחלקה באותו package. public זהה. internal ו-protected internal קיימים רק ב-C#.
8. שדה לקריאה בלבד: ב-C# readonly (ניתן לשינוי בקונסטרקטור) ו-const למשתנה. ב-Java המילה final בשני המקרים, ולא ניתן לשנות אחרי שהוכנס ערך, גם לא בקונסטרקטור.
9. הורשה וממשקים: ב-C# נקודותיים. ב-Java extends להורשה ו-implements לממשק. ב-C# שם ממשק מתחיל ב-I, וב-Java לא נהוג. הורשה יחד עם ממשקים ב-Java: extends, שם המחלקה, implements ורשימת ממשקים.
10. פונקציות וירטואליות: ב-C# צריך virtual ו-override. ב-Java כל הפונקציות וירטואליות אוטומטית, ואין שתי המילים האלה.
11. קריאה לבסיס: ב-C# : base(...) ו-base.Method(). ב-Java super(...), שחייבת להיות השורה הראשונה בקונסטרקטור, ו-super.Method() שאינה חייבת להיות ראשונה.
12. בדיקות והמרות: ב-C# האופרטורים is ו-as. ב-Java instanceof ו-casting רגיל, ואין as.
13. מה שחסר ב-Java: Properties (משתמשים בפונקציות getter ו-setter), enum (בגרסה של אנדרואיד באותו זמן), delegates, events ו-struct.
שימו לב
המרצה מציין שהתחביר של Java קרוב ביותר ל-C# מבין השפות המונחות עצמים, ושהקורס יראה בהמשך איך משיגים פונקציונליות של events בלי המנגנון של C#.
אחרי ההרצאה אפשר לקרוא קוד Java כשמכירים C#, ולדעת לאילו שינויים בתחביר ובהרשאות לשים לב.
השיעור הבא בקורס: השוואה בין גרסאות אנדרואיד

פרקי ההרצאה: השוואה בין #C לבין JAVA

  1. 00:00

    Java לעומת C# בפיתוח אנדרואיד

  2. 00:58

    קבצי מקור ושמות מחלקות

  3. 02:21

    סוגריים ומוסכמות שמות

  4. 02:56

    טיפוסים מובנים בשתי השפות

  5. 04:19

    מחרוזות והשוואתן

  6. 05:59

    לולאת ForEach ו-Namespace

  7. 06:42

    ייבוא מרחבי שמות

  8. 07:37

    הרשאות גישה

תמלול ההרצאה: השוואה בין #C לבין JAVA

הטקסט המלא של הדקות הראשונות בהרצאה «השוואה בין #C לבין JAVA» בקורס הווידאו של PracticU – כתוביות בעברית עם זמן התחלה לכל פסקה. כך תוכלו לקרוא ולחפש את הנושאים לפני שמתחילים ללמוד.

  1. 00:02

    בסרטון הקודם ציינתי שפיתוח אפליקציות לאנדרואיד מתבצע בעזרת שפת התכנות Java. אבל בנוסף ציינתי גם שמתכנתי C-Sharp או C++ גם יכולים להבין לגמרי את כל הסרטונים בקורס הזה, ויכולים בקלות להתמצא ב-Java ולפתח אפליקציות לאנדרואיד.

  2. 00:25

    גם אם אתם מתכנתי Object Oriented בכל שפה אחרת, הקורס הזה יכול להיות בשבילכם, ואתם יכולים בקלות להתמצא בכל הסרטונים ולפתח אפליקציות לאנדרואיד גם אם זה בשפת ג'אווה.

  3. 00:41

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

  4. 01:07

    לבצע השוואה בכדי לראות את ההבדלים המרכזיים שיש בין C-Sharp לבין Java. דבר ראשון ה-Source Files ב-C-Sharp קובץ מקור Source Code חייב להיות בעל קובץ שמסתיים בנקודת CS.

  5. 01:27

    ב-Java קובץ כזה חייב להסתיים בנקודת Java. עכשיו ב-C-Sharp אם אנחנו בונים מחלקה היא יכולה בעצם לשבת בכל קובץ CS שנרצה בעל איזה שם שנרצה.

  6. 01:41

    כמובן הגיוני שהשם של הקובץ יהיה בשם של הקלאס, זה הדבר הנכון לביצוע מבחינת היגיון. בג'אווה מחייבים את זה. אם אנחנו כותבים מה שנקרא Top-Level Class, כלומר מחלקה ראשית שנמצאת בתוך קובץ מקור, בתוך Source Code, השם של הקובץ חייב להיות כמו השם של המחלקה.

  7. 02:07

    אם לדוגמה בג'אווה אני כותב מחלקה שנקראת cat, אז היא חייבת לשבת בקובץ שנקרא cat.java. כאשר אנחנו כותבים איזשהו בלוק ב-C-Sharp, אז הרבה פעמים מקובל שאנחנו יורדים שורה ואז פותחים סוגריים מסולסלים.

  8. 02:28

    בג'אווה פתיחת הסוגריים המסולסלים מתבצעת בהמשך לשורת הבלוק, הכותרת של הבלוק. לדוגמה if a גדול מ-b ובהמשך פותחים מסולסלות.

  9. 02:41

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

  10. 03:00

    שם של ניימספייס ב-C-Sharp כל מילה תתחיל בעוד גדולה, ב-Java זה נקרא Package וכל האותיות אותיות קטנות. אלו טיפוסים שבאים כחלק משפת התכנות קיימים ב-C-Sharp ואלו קיימים ב-Java.

  11. 03:21

    יש לנו את byte, sbyte, short, u-short, int, u-int, long ו-u-long עבור משתנים שלמים. יש לנו את float, double ו-decimal עבור מספרים עשרוניים שיכולים להכיל נקודה עשרונית.

  12. 03:42

    יש לנו בול עבור ערכים בוליאנים כמו true או false. יש לנו char עבור תווים בודדים. יש לנו סטרינג עבור מכרוזות ואובג'קט כ-reference שיכול לקבל כל אובייקט.

  13. 03:57

    בג'אווה הטיפוסים שהם build-in כחלק משפת התכנות הם אך ורק בייט, שורט, אינט ולונג עבור מספרים שלמים, פלואוט ודאבל עבור מספרים עשרוניים, בוליאן עבור ערכים בוליאנים כמו true או false וצ'אר עבור תווים בודדים.

  14. 04:20

    שימו לב שסטרינג ואובג'קט קיימים בג'אווה אבל לא נחשבים כטיפוסים פרימיטיביים שבאים כחלק משפת התכנות. סטרינגס מכרוזות ב-C-Sharp סטרינג s שווה הלו, בג'אווה סטרינג זה עם s גדולה.

  15. 04:41

    גם ב-C-Sharp אנחנו יכולים להגדיר סטרינג עם s גדולה, ולמעשה ב-C-Sharp סטרינג עם s קטנה זה כינוי או שם מקוצר יותר או נוח יותר לשימוש שמחליף את הסטרינג עם האס הגדולה.

  16. 04:59

    אבל ב-Java סטרינג היא רק עם אס גדולה. כאשר אנחנו מבצעים השוואה עם הכרזות ב-C-Sharp יש לנו את האופרטור שווה שווה שמאוד נוח לשימוש.

  17. 05:13

    ב-Java שווה שווה לא נתמך, לפחות לא בגרסת Java שמשתמשים איתה בתוך אנדרואיד, שזאת גרסה 7. אז ב-Java מה שאנחנו צריכים לעשות זה פשוט להשתמש עם האופרטור או ליתר דיוק עם הפונקציה equals str1.equals str2 בכדי לבצע השוואות עם מכרוזות.

  18. 05:38

    Object ב־C-Sharp יש לנו אפשרות להשתמש עם השם Object עם O קטנה. ב־C-Sharp גם אפשר להשתמש עם Object עם O גדולה. אבל שוב Object עם O קטנה יותר נוח וזה בעצם מעין כינוי ל־Object עם O גדולה.

  19. 05:56

    בג'אווה אובג'קט מגיע אך ורק אם הוא גדולה. forEach Loop לולאת forEach בפי שארפ forEach int item in ושם האוסף בג'אווה forInt item.2 שם האוסף ניימספייס בפי שארפ אנחנו מגדירים ניימספייס לדוגמה zoo wild animals ובתוכו בתוך בלוק מגדירים את המחלקות השונות.

  20. 06:31

    ב-Java אנחנו רושמים את המילה Package, רושמים את השם של ה-Namespace, לדוגמה zoo.wild.animals ואז מתחת מתחילים לכתוב את המחלקות השונות. נהוג בשני המקרים שאנחנו נכתוב רק מחלקה אחת בקובץ אחד.

  21. 06:51

    אם אנחנו נמצאים במרחב שמות מסוים ואנחנו רוצים לייבא מרחב שמות אחר, ב-C-Sharp אנחנו רושמים פשוט Using ואת שם המרחב שמות zoo.wild.animals. בג'אווה אנחנו רושמים import zoo wild animal נקודה וכוכבית.

  22. 07:11

    נקודה כוכבית מציין שאנחנו רוצים לייבא את כל המחלקות שנמצאות בתוך מרחב השמות הזה, zoo wild animals. עכשיו, בג'אווה אנחנו יכולים לעשות משהו מעניין שב-c-sharp אנחנו לא יכולים לעשות אותו.

  23. 07:28

    בג'אווה אנחנו יכולים to import zoo wild animals נקודה ושם קלאס, לדוגמה ליון, כדי להשתמש אך ורק עם הקלאס הזאת בתוך הקובץ.

  24. 07:41

    ב-C-Sharp אין לנו אפשרות לעשות דבר כזה, אנחנו יכולים רק להגדיר את כל מרחב השמות. הרשאות גישה אם ב-C-Sharp אנחנו בונים איזושהי מחלקה, ולא מגדירים שום הרשאת גישה לאיזשהו משתנה או לפונקציה, מי שיכול להשתמש במשתנה או בפונקציה זה אך ורק המחלקה המקומית.

  25. 08:06

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

  26. 08:22

    שימו לב, גם מחלקות אחרות שנמצאות תחת אותו ה-package יכולות להשתמש עם המשתנה הזה. יש משמעות קצת אחרת ל-package מאשר name space ב-Java מול פישר.

  27. 08:36

    פאקג' זה משהו שהוא קצת יותר קרוב לקלאס ויותר חזק מהבחינה הזאת. עכשיו, אם אנחנו מגדירים את המילה private לפני שם של משתנה ב-C-Sharp כמובן זה ה-Default ורק המחלקה יכולה להשתמש איתו.

  28. 08:54

    כאן גם Java רק המחלקה ב-Java יכולה להשתמש עם המשתנה הזה. במקרה הזה זה בדיוק אותו הדבר כמו ב-C-Sharp. אם אנחנו מגדירים Protected בתור שם של Access Modifier כהרשעת גישה ב-C-Sharp רק המחלקה ומחלקות יורשות יכולות להשתמש עם המשתנה הזה.

  29. 09:20

    ג'אווה, גם המחלקה, גם מחלקות ירשות וגם בכל מקום באותו הפאקג' ניתן לגשת ולהשתמש עם המשתנה. פאבליק, כל מקום נגיש למשתנה הזה או המשתנה נגיש מכל מקום.

  30. 09:38

    גם בג'אווה זה אותו הדבר. הגדרת משתנה כפאבליק מציינת שמכל מקום אנחנו יכולים לגשת אליו. ב-C-Sharp קיים לנו אינטרנל. מי שיכול לגשת לאינטרנל זה רק הפרויקט הנוכחי.

  31. 09:56

    בג'אווה אין דבר כזה, זה לא נתמך. ב-C-Sharp יש הרשאת גישה מאוד נדירה שנקראת ProtectedInternal מי שיכול לגשת ל-ProtectedInternal זה גם הפרויקט הנוכחי וכל מי שיורש את המחלקה גם מפרויקטים אחרים.

  32. 10:14

    בג'אווה לא נתמך, אין דבר כזה.

לקורס המלא: קורס פיתוח אפליקציות לאנדרואיד

ההרצאה הקודמת: מבוא ל-Android

ההרצאה הבאה: השוואה בין גרסאות אנדרואיד

הרצאות קשורות מקורסים אחרים

  • השוואה בין SQL Server לבין MongoDB
  • Java Project
  • Java Docs
  • השוואה בין גרסאות - Log ו-Show

קורסים נוספים במסלול

  • קורס יסודות התכנות - שפת JAVA - קורס ג'אווה למתחילים
  • קורס פיתוח אפליקציות - לאייפון iPhone iOS - ב-Swift-Xcode
  • קורס פלאטר - Flutter - שפת DART של גוגל למובייל - פיתוח אפליקציות לאנדרואיד ואייפון
  • קורס PhoneGap - פיתוח אפליקציות לאנדרואיד ואייפון