fix: converted single to triple backticks9 (#36236)

This commit is contained in:
Randell Dawson
2019-06-20 14:49:26 -07:00
committed by Tom
parent ab2523953b
commit da6bd27eec
75 changed files with 1904 additions and 1733 deletions

View File

@ -12,7 +12,7 @@ localeTitle: ف يوم
### مثال ### مثال
` ```html
<html> <html>
<head> <head>
<title>Paragraph example</title> <title>Paragraph example</title>
@ -23,17 +23,17 @@ localeTitle: ف يوم
</p> </p>
</body> </body>
</html> </html>
` ```
يمكنك أيضًا تضمين عنصر الارتساء `<a>` في فقرة. يمكنك أيضًا تضمين عنصر الارتساء `<a>` في فقرة.
### مثال ### مثال
` ```html
<p>Here's a <p>Here's a
<a href="http://freecodecamp.com">link to Free Code Camp.com</a> <a href="http://freecodecamp.com">link to Free Code Camp.com</a>
for you to follow.</p> for you to follow.</p>
` ```
#### معلومات اكثر: #### معلومات اكثر:

View File

@ -6,10 +6,10 @@ localeTitle: يوم واحد
في HTML ، يتم استخدام العلامة `<s>` في نص يتوسطه خط. على سبيل المثال: في HTML ، يتم استخدام العلامة `<s>` في نص يتوسطه خط. على سبيل المثال:
` ```html
<p><s>This year is the year of the monkey.</s></p> <p><s>This year is the year of the monkey.</s></p>
<p>This year is the year of the Rooster.</p> <p>This year is the year of the Rooster.</p>
` ```
#### معلومات اكثر: #### معلومات اكثر:

View File

@ -8,24 +8,27 @@ localeTitle: علامة البرنامج النصي
يتم استخدام العلامة / `<script>` لدمج جافا سكريبت من جانب العميل في ملف HTML الخاص بك والذي يمكن استخدامه لإضافة التفاعلية والمنطق إلى موقع الويب الخاص بك يتم استخدام العلامة / `<script>` لدمج جافا سكريبت من جانب العميل في ملف HTML الخاص بك والذي يمكن استخدامه لإضافة التفاعلية والمنطق إلى موقع الويب الخاص بك
`<script> ```
<script>
//JavaScript code is written here //JavaScript code is written here
</script> </script>
<script src="js/app.js"> <script src="js/app.js">
` ```
يمكن استخدام العلامة لتشمل شفرة جافا سكريبت الفعلية في HTML نفسها مثل هذا يمكن استخدام العلامة لتشمل شفرة جافا سكريبت الفعلية في HTML نفسها مثل هذا
`<script> ```
<script>
alert('hello this is my Javascript doing things!'); alert('hello this is my Javascript doing things!');
</script> </script>
` ```
أو يمكنك استخدامه كطريقة للإشارة إلى ملف جافا سكريبت خارجي مثل هذا أو يمكنك استخدامه كطريقة للإشارة إلى ملف جافا سكريبت خارجي مثل هذا
`<script src="main.js" /> ```
` <script src="main.js" />
```
وهنا تأخذ خاصية `src` للعنصر مسارًا إلى ملف Javascript وهنا تأخذ خاصية `src` للعنصر مسارًا إلى ملف Javascript

View File

@ -10,7 +10,7 @@ localeTitle: قسم القسم
لا ينبغي استخدام عنصر `<section>` بدلاً من عنصر `<div>` إذا كانت هناك حاجة إلى حاوية عامة. يجب استخدامه لتعريف الأقسام في صفحة HTML. لا ينبغي استخدام عنصر `<section>` بدلاً من عنصر `<div>` إذا كانت هناك حاجة إلى حاوية عامة. يجب استخدامه لتعريف الأقسام في صفحة HTML.
` ```html
<html> <html>
<head> <head>
<title>Section Example</title> <title>Section Example</title>
@ -22,7 +22,7 @@ localeTitle: قسم القسم
</section> </section>
</body> </body>
</html> </html>
` ```
#### معلومات اكثر: #### معلومات اكثر:

View File

@ -24,9 +24,9 @@ localeTitle: يوم سبان
يشبه رمز الفقرة ذات النص الأحمر هذا: يشبه رمز الفقرة ذات النص الأحمر هذا:
` ```html
<p>This paragraph has <span style="color:red">red span styling</span> inside it without affecting the rest of the document.</p> <p>This paragraph has <span style="color:red">red span styling</span> inside it without affecting the rest of the document.</p>
` ```
#### الاختلافات بين `<span>` و `<div>` #### الاختلافات بين `<span>` و `<div>`

View File

@ -8,8 +8,9 @@ localeTitle: علامة قوية
### استعمال ### استعمال
`<strong> Hello World! </strong> ```
` <strong> Hello World! </strong>
```
ينتج رمز أعلاه في ينتج رمز أعلاه في
@ -33,12 +34,13 @@ localeTitle: علامة قوية
### مثال: ### مثال:
`<body> ```
<body>
<p> <p>
<strong> This </strong> is important. <strong> This </strong> is important.
</p> </p>
</body> </body>
` ```
#### معلومات اكثر: #### معلومات اكثر:

View File

@ -26,7 +26,7 @@ localeTitle: علامة نمط
تُستخدم علامة النمط لتعيين أي أنماط CSS لصفحة الويب داخل مستند. يجب أن تكون علامة النمط متداخلة مع قسم الرأس في مستند html: تُستخدم علامة النمط لتعيين أي أنماط CSS لصفحة الويب داخل مستند. يجب أن تكون علامة النمط متداخلة مع قسم الرأس في مستند html:
` ```html
<head> <head>
<style> <style>
h1 { h1 {
@ -35,6 +35,6 @@ localeTitle: علامة نمط
} }
</style> </style>
</head> </head>
` ```
يمكنك كتابة أي علامة نمط داخلية للرمز CSS - وفقًا للبناء الخاص بها. يمكنك كتابة أي علامة نمط داخلية للرمز CSS - وفقًا للبناء الخاص بها.

View File

@ -8,7 +8,7 @@ localeTitle: علامة الجدول
### مثال ### مثال
` ```html
<table> <table>
<tr> <tr>
<td>Row 1, Cell 1</td> <td>Row 1, Cell 1</td>
@ -19,7 +19,7 @@ localeTitle: علامة الجدول
<td>Row 2, Cell 2</td> <td>Row 2, Cell 2</td>
</tr> </tr>
</table> </table>
` ```
كتلة التعليمة البرمجية هذه قد ينتج الإخراج التالي: كتلة التعليمة البرمجية هذه قد ينتج الإخراج التالي:

View File

@ -15,7 +15,7 @@ localeTitle: اليوم الثاني
### مثال ### مثال
` ```html
<html> <html>
<head> <head>
<title>Td Tag Example</title> <title>Td Tag Example</title>
@ -33,4 +33,4 @@ localeTitle: اليوم الثاني
</table> </table>
</body> </body>
</html> </html>
` ```

View File

@ -10,11 +10,11 @@ localeTitle: علامة Textarea
عينة من الرموز: عينة من الرموز:
` ```html
<form> <form>
<textarea name="comment" rows="8" cols="80" maxlength="500" placeholder="Enter your comment here..." required></textarea> <textarea name="comment" rows="8" cols="80" maxlength="500" placeholder="Enter your comment here..." required></textarea>
</form> </form>
` ```
السمات الأكثر شيوعًا: تحدد `row` و `cols` ارتفاع وعرض النص تحدد السمة `placeholder` النص المرئي للمستخدم ، فهي تساعد المستخدم على فهم البيانات التي يجب كتابتها تحدد السمة `maxlength` الحد الأقصى لطول النص الذي يمكن كتابته في textarea ، لا يمكن للمستخدم إرسال المزيد من الأحرف تعني السمة `required` أنه يجب ملء هذا الحقل قبل إرسال النموذج السمات الأكثر شيوعًا: تحدد `row` و `cols` ارتفاع وعرض النص تحدد السمة `placeholder` النص المرئي للمستخدم ، فهي تساعد المستخدم على فهم البيانات التي يجب كتابتها تحدد السمة `maxlength` الحد الأقصى لطول النص الذي يمكن كتابته في textarea ، لا يمكن للمستخدم إرسال المزيد من الأحرف تعني السمة `required` أنه يجب ملء هذا الحقل قبل إرسال النموذج

View File

@ -18,19 +18,19 @@ localeTitle: كيانات HTML
كيان الشخصية يشبه هذا: كيان الشخصية يشبه هذا:
` ```html
<!-- format &[entity_name]; --> <!-- format &[entity_name]; -->
<!-- example for a less-than sign (<) --> <!-- example for a less-than sign (<) -->
&lt; &lt;
` ```
أو أو
` ```html
<!-- &#[entity_number]; --> <!-- &#[entity_number]; -->
<!-- example for a less-than sign (<) --> <!-- example for a less-than sign (<) -->
&#60; &#60;
` ```
## دليل مرجعي ## دليل مرجعي

View File

@ -24,7 +24,7 @@ localeTitle: نماذج HTML
مثال الكود: مثال الكود:
` ```html
<form> <form>
<label for="username">Username:</label> <label for="username">Username:</label>
<input type="text" name="username" id="username"> <input type="text" name="username" id="username">
@ -43,7 +43,7 @@ localeTitle: نماذج HTML
<input type="color"> <input type="color">
<input type="checkbox" name="correct" value="correct">Correct <input type="checkbox" name="correct" value="correct">Correct
</form> </form>
` ```
العناصر الأخرى التي يمكن أن تحتوي على الشكل: العناصر الأخرى التي يمكن أن تحتوي على الشكل:

View File

@ -12,20 +12,20 @@ localeTitle: صوت HTML5
#### مثال 1 #### مثال 1
` ```html
<audio controls> <audio controls>
<source src="tutorial.ogg" type="audio/ogg"> <source src="tutorial.ogg" type="audio/ogg">
<source src="tutorial.mp3" type="audio/mpeg"> <source src="tutorial.mp3" type="audio/mpeg">
Your browser does not support the audio element. Your browser does not support the audio element.
</audio> </audio>
` ```
#### مثال 2 #### مثال 2
` ```html
<audio src="https://s3.amazonaws.com/freecodecamp/simonSound1.mp3" controls loop autoplay> <audio src="https://s3.amazonaws.com/freecodecamp/simonSound1.mp3" controls loop autoplay>
</audio> </audio>
` ```
تتضمن سمة `controls` الصوتية مثل التشغيل والإيقاف المؤقت ومستوى الصوت. إذا لم تستخدم هذه السمة ، فلن يتم عرض أي عناصر تحكم. تتضمن سمة `controls` الصوتية مثل التشغيل والإيقاف المؤقت ومستوى الصوت. إذا لم تستخدم هذه السمة ، فلن يتم عرض أي عناصر تحكم.

View File

@ -81,7 +81,7 @@ The `&#60;section&#62;` و `&#60;article&#62;` العناصر متشابهة م
1. تهدف المقالة إلى أن تكون قابلة للتوزيع أو القابلة لإعادة الاستخدام بشكل مستقل. 1. تهدف المقالة إلى أن تكون قابلة للتوزيع أو القابلة لإعادة الاستخدام بشكل مستقل.
2. القسم هو تجميع موضوعي للمحتوى. 2. القسم هو تجميع موضوعي للمحتوى.
` ```html
<section> <section>
<p>Top Stories</p> <p>Top Stories</p>
<section> <section>
@ -97,13 +97,13 @@ The `&#60;section&#62;` و `&#60;article&#62;` العناصر متشابهة م
<article>Story 3</article> <article>Story 3</article>
</section> </section>
</section> </section>
` ```
#### `&#60;header&#62;` و `&#60;hgroup&#62;` #### `&#60;header&#62;` و `&#60;hgroup&#62;`
`&#60;header&#62;` عنصر موجود بشكل عام في أعلى مستند أو قسم أو مقالة ويحتوي عادةً على العنوان الرئيسي وبعض أدوات التنقل والبحث. `&#60;header&#62;` عنصر موجود بشكل عام في أعلى مستند أو قسم أو مقالة ويحتوي عادةً على العنوان الرئيسي وبعض أدوات التنقل والبحث.
` ```html
<header> <header>
<h1>Company A</h1> <h1>Company A</h1>
<ul> <ul>
@ -116,17 +116,17 @@ The `&#60;section&#62;` و `&#60;article&#62;` العناصر متشابهة م
<input type="submit" /> <input type="submit" />
</form> </form>
</header> </header>
` ```
`&#60;hgroup&#62;` يجب استخدام عنصر حيث تريد عنوان رئيسي مع واحد أو أكثر من العناوين الفرعية. `&#60;hgroup&#62;` يجب استخدام عنصر حيث تريد عنوان رئيسي مع واحد أو أكثر من العناوين الفرعية.
` ```html
<hgroup> <hgroup>
<h1>Heading 1</h1> <h1>Heading 1</h1>
<h2>Subheading 1</h2> <h2>Subheading 1</h2>
<h2>Subheading 2</h2> <h2>Subheading 2</h2>
</hgroup> </hgroup>
` ```
تذكر ، أن رأس `&#60;header&#62;` عنصر يمكن أن يحتوي على أي محتوى ، ولكن `&#60;hgroup&#62;` لا يمكن أن يحتوي العنصر إلا على رؤوس أخرى ، وهي `&#60;h1&#62;` إلى `&#60;h6&#62;` بما في ذلك `&#60;hgroup&#62;` . تذكر ، أن رأس `&#60;header&#62;` عنصر يمكن أن يحتوي على أي محتوى ، ولكن `&#60;hgroup&#62;` لا يمكن أن يحتوي العنصر إلا على رؤوس أخرى ، وهي `&#60;h1&#62;` إلى `&#60;h6&#62;` بما في ذلك `&#60;hgroup&#62;` .
@ -134,15 +134,15 @@ The `&#60;section&#62;` و `&#60;article&#62;` العناصر متشابهة م
The `&#60;aside&#62;` عنصر مخصص للمحتوى الذي ليس جزءًا من تدفق النص الذي يظهر فيه ، ومع ذلك لا يزال مرتبطًا بطريقة ما. هذا `&#60;aside&#62;` كشريط جانبي للمحتوى الرئيسي الخاص بك. The `&#60;aside&#62;` عنصر مخصص للمحتوى الذي ليس جزءًا من تدفق النص الذي يظهر فيه ، ومع ذلك لا يزال مرتبطًا بطريقة ما. هذا `&#60;aside&#62;` كشريط جانبي للمحتوى الرئيسي الخاص بك.
` ```html
<aside> <aside>
<p>This is a sidebar, for example a terminology definition or a short background to a historical figure.</p> <p>This is a sidebar, for example a terminology definition or a short background to a historical figure.</p>
</aside> </aside>
` ```
قبل HTML5 ، تم إنشاء قوائمنا باستخدام `&#60;ul&#62;` 's و `&#60;li&#62;` الصورة. الآن ، مع هذه ، يمكننا فصل عناصر القائمة لدينا باستخدام `&#60;nav&#62;` للتنقل بين صفحاتك. يمكنك الحصول على أي عدد من `&#60;nav&#62;` العناصر على الصفحة ، على سبيل المثال ، من الشائع أن يكون لديك نظام ملاحة عمومي عبر الجزء العلوي (في `&#60;header&#62;` ) والتنقل المحلي في شريط جانبي (في عنصر `&#60;aside&#62;` ). قبل HTML5 ، تم إنشاء قوائمنا باستخدام `&#60;ul&#62;` 's و `&#60;li&#62;` الصورة. الآن ، مع هذه ، يمكننا فصل عناصر القائمة لدينا باستخدام `&#60;nav&#62;` للتنقل بين صفحاتك. يمكنك الحصول على أي عدد من `&#60;nav&#62;` العناصر على الصفحة ، على سبيل المثال ، من الشائع أن يكون لديك نظام ملاحة عمومي عبر الجزء العلوي (في `&#60;header&#62;` ) والتنقل المحلي في شريط جانبي (في عنصر `&#60;aside&#62;` ).
` ```html
<nav> <nav>
<ul> <ul>
<li><a href="/home">Home</a></li> <li><a href="/home">Home</a></li>
@ -150,31 +150,31 @@ The `&#60;aside&#62;` عنصر مخصص للمحتوى الذي ليس جزءً
<li><a href="/contact">Contact us</a></li> <li><a href="/contact">Contact us</a></li>
</ul> </ul>
</nav> </nav>
` ```
#### `&#60;footer&#62;` #### `&#60;footer&#62;`
إذا كان هناك رأس `&#60;header&#62;` يجب أن يكون هناك `&#60;footer&#62;` . A `&#60;footer&#62;` بشكل عام في أسفل مستند أو قسم أو مقالة. تمامًا مثل `&#60;header&#62;` المحتوى عبارة عن معلومات عامة ، مثل تفاصيل المؤلف ، أو المعلومات القانونية ، و / أو روابط إلى المعلومات ذات الصلة. تسري أيضًا على تضمين `&#60;section&#62;` عناصر داخل تذييل الصفحة. إذا كان هناك رأس `&#60;header&#62;` يجب أن يكون هناك `&#60;footer&#62;` . A `&#60;footer&#62;` بشكل عام في أسفل مستند أو قسم أو مقالة. تمامًا مثل `&#60;header&#62;` المحتوى عبارة عن معلومات عامة ، مثل تفاصيل المؤلف ، أو المعلومات القانونية ، و / أو روابط إلى المعلومات ذات الصلة. تسري أيضًا على تضمين `&#60;section&#62;` عناصر داخل تذييل الصفحة.
` ```html
<footer>&copy;Company A</footer> <footer>&copy;Company A</footer>
` ```
#### `&#60;small&#62;` #### `&#60;small&#62;`
ال `&#60;small&#62;` يظهر العنصر غالبًا داخل `&#60;footer&#62;` أو `&#60;aside&#62;` العنصر الذي عادة ما يحتوي على معلومات حقوق الطبع والنشر أو التنازلات القانونية ، وغيرها من مثل هذه المطبوعة الجميلة. ومع ذلك ، هذا غير مخصص لجعل النص أصغر. إنه مجرد وصف محتواه ، وليس وصف العرض التقديمي. ال `&#60;small&#62;` يظهر العنصر غالبًا داخل `&#60;footer&#62;` أو `&#60;aside&#62;` العنصر الذي عادة ما يحتوي على معلومات حقوق الطبع والنشر أو التنازلات القانونية ، وغيرها من مثل هذه المطبوعة الجميلة. ومع ذلك ، هذا غير مخصص لجعل النص أصغر. إنه مجرد وصف محتواه ، وليس وصف العرض التقديمي.
` ```html
<footer><small>&copy;Company A</small> Date</footer> <footer><small>&copy;Company A</small> Date</footer>
` ```
#### `&#60;time&#62;` #### `&#60;time&#62;`
The `&#60;time&#62;` يسمح عنصر لا لبس فيها ISO 8601 تاريخ لإرفاق نسخة الإنسان من ذلك التاريخ. The `&#60;time&#62;` يسمح عنصر لا لبس فيها ISO 8601 تاريخ لإرفاق نسخة الإنسان من ذلك التاريخ.
` ```html
<time datetime="2017-10-31T11:21:00+02:00">Tuesday, 31 October 2017</time> <time datetime="2017-10-31T11:21:00+02:00">Tuesday, 31 October 2017</time>
` ```
لماذا تهتم بـ `&#60;time&#62;` ؟ في حين يستطيع البشر قراءة الوقت الذي يمكن أن يفسد من خلال السياق بالطريقة العادية ، يمكن لأجهزة الكمبيوتر قراءة تاريخ ISO 8601 ورؤية التاريخ والوقت والمنطقة الزمنية. لماذا تهتم بـ `&#60;time&#62;` ؟ في حين يستطيع البشر قراءة الوقت الذي يمكن أن يفسد من خلال السياق بالطريقة العادية ، يمكن لأجهزة الكمبيوتر قراءة تاريخ ISO 8601 ورؤية التاريخ والوقت والمنطقة الزمنية.
@ -182,12 +182,12 @@ The `&#60;time&#62;` يسمح عنصر لا لبس فيها ISO 8601 تاريخ
`&#60;figure&#62;` لتغليف محتوى الصور حوله ، و `&#60;figcaption&#62;` هو تسمية صورتك. `&#60;figure&#62;` لتغليف محتوى الصور حوله ، و `&#60;figcaption&#62;` هو تسمية صورتك.
` ```html
<figure> <figure>
<img src="https://en.wikipedia.org/wiki/File:Shadow_of_Mordor_cover_art.jpg" alt="Shadow of Mordor" /> <img src="https://en.wikipedia.org/wiki/File:Shadow_of_Mordor_cover_art.jpg" alt="Shadow of Mordor" />
<figcaption>Cover art for Middle-earth: Shadow of Mordor</figcaption> <figcaption>Cover art for Middle-earth: Shadow of Mordor</figcaption>
</figure> </figure>
` ```
### تعرف على المزيد حول عناصر HTML5 الجديدة: ### تعرف على المزيد حول عناصر HTML5 الجديدة:

View File

@ -32,19 +32,21 @@ localeTitle: HTML5 فيديو
`#### poster ```
#### poster
The "poster" attribute is the image that shows on the video until the user clicks to play it. The "poster" attribute is the image that shows on the video until the user clicks to play it.
` ```
أتش تي أم أل أتش تي أم أل
`#### controls ```
#### controls
The "controls" attribute can be set to true or false and will handle whether controls such as the play/pause button or volume slider appear. You set it to true by adding it into the tag, if it is not present in the tag it is set to false. The "controls" attribute can be set to true or false and will handle whether controls such as the play/pause button or volume slider appear. You set it to true by adding it into the tag, if it is not present in the tag it is set to false.
` ```
أتش تي أم أل أتش تي أم أل

View File

@ -12,21 +12,23 @@ localeTitle: تخزين HTML5 على الويب
`window.localStorage` : يخزن البيانات بدون تاريخ انتهاء الصلاحية ويعيش حتى تتم إزالتها. `window.localStorage` : يخزن البيانات بدون تاريخ انتهاء الصلاحية ويعيش حتى تتم إزالتها.
`// Store Item ```javascript
// Store Item
localStorage.setItem("foo", "bar"); localStorage.setItem("foo", "bar");
// Get Item // Get Item
localStorage.getItem("foo"); //returns "bar" localStorage.getItem("foo"); //returns "bar"
` ```
`window.sessionStorage` : تخزين البيانات لجلسة واحدة ، حيث يتم فقدان البيانات عند إغلاق علامة تبويب المتصفح / المتصفح. `window.sessionStorage` : تخزين البيانات لجلسة واحدة ، حيث يتم فقدان البيانات عند إغلاق علامة تبويب المتصفح / المتصفح.
`// Store Item ```javascript
// Store Item
sessionStorage.setItem("foo", "bar"); sessionStorage.setItem("foo", "bar");
// Get Item // Get Item
sessionStorage.getItem("foo"); //returns "bar" sessionStorage.getItem("foo"); //returns "bar"
` ```
نظرًا لأن التطبيق الحالي يعتمد فقط تعيينات سلسلة إلى سلسلة ، تحتاج إلى إجراء تسلسل وإزالة تسلسل هياكل البيانات الأخرى. نظرًا لأن التطبيق الحالي يعتمد فقط تعيينات سلسلة إلى سلسلة ، تحتاج إلى إجراء تسلسل وإزالة تسلسل هياكل البيانات الأخرى.
@ -34,18 +36,21 @@ localeTitle: تخزين HTML5 على الويب
على سبيل المثال لـ JSON المعطى على سبيل المثال لـ JSON المعطى
`var jsonObject = { 'one': 1, 'two': 2, 'three': 3 }; ```
` var jsonObject = { 'one': 1, 'two': 2, 'three': 3 };
```
تم أولاً تحويل كائن JSON إلى سلسلة وحفظه في وحدة التخزين المحلية: تم أولاً تحويل كائن JSON إلى سلسلة وحفظه في وحدة التخزين المحلية:
`localStorage.setItem('jsonObjectString', JSON.stringify(jsonObject)); ```
` localStorage.setItem('jsonObjectString', JSON.stringify(jsonObject));
```
للحصول على كائن JSON من السلسلة المخزنة في التخزين المحلي: للحصول على كائن JSON من السلسلة المخزنة في التخزين المحلي:
`var jsonObject = JSON.parse(localStorage.getItem('jsonObjectString')); ```
` var jsonObject = JSON.parse(localStorage.getItem('jsonObjectString'));
```
#### معلومات اكثر: #### معلومات اكثر:

View File

@ -16,37 +16,37 @@ localeTitle: نوافذ الأطر المدمجة
تضمين فيديو YouTube مع `<iframe>` : تضمين فيديو YouTube مع `<iframe>` :
` ```html
<iframe width="560" height="315" src="https://www.youtube.com/embed/v8kFT4I31es" <iframe width="560" height="315" src="https://www.youtube.com/embed/v8kFT4I31es"
frameborder="0" allowfullscreen></iframe> frameborder="0" allowfullscreen></iframe>
` ```
تضمين خرائط Google مع `<iframe>` : تضمين خرائط Google مع `<iframe>` :
` ```html
<iframe src="https://www.google.com/maps/embed?pb=!1m18!1m12!1m3!1d774386.2436462595!2d-74.53874786161381!3d40.69718109704434!2m3!1f0!2f0!3f0!3m2!1i1024!2i768!4f13.1!3m3!1m2!1s0x89c24fa5d33f083b%3A0xc80b8f06e177fe62!2sNew+York%2C+NY%2C+USA!5e0!3m2!1sen!2sau!4v1508405930424" <iframe src="https://www.google.com/maps/embed?pb=!1m18!1m12!1m3!1d774386.2436462595!2d-74.53874786161381!3d40.69718109704434!2m3!1f0!2f0!3f0!3m2!1i1024!2i768!4f13.1!3m3!1m2!1s0x89c24fa5d33f083b%3A0xc80b8f06e177fe62!2sNew+York%2C+NY%2C+USA!5e0!3m2!1sen!2sau!4v1508405930424"
width="600" height="450" frameborder="0" style="border:0" allowfullscreen></iframe> width="600" height="450" frameborder="0" style="border:0" allowfullscreen></iframe>
` ```
### نص بديل ### نص بديل
يتم استخدام المحتوى بين علامتي الفتح `<iframe>` كنص بديل ، ليتم عرضه إذا كان متصفح المشاهد لا يدعم iframe. يتم استخدام المحتوى بين علامتي الفتح `<iframe>` كنص بديل ، ليتم عرضه إذا كان متصفح المشاهد لا يدعم iframe.
` ```html
<iframe width="560" height="315" src="https://www.youtube.com/embed/v8kFT4I31es" frameborder="0"> <iframe width="560" height="315" src="https://www.youtube.com/embed/v8kFT4I31es" frameborder="0">
<p>Your browser does not support iframes.</p> <p>Your browser does not support iframes.</p>
</iframe> </iframe>
` ```
### استهداف إطار Iframe في ارتباط ### استهداف إطار Iframe في ارتباط
يمكن لأي رابط `<a>` أن يستهدف محتوى عنصر `<iframe>` . بدلاً من إعادة توجيه نافذة المتصفح إلى صفحة الويب المرتبطة ، سيعيد توجيه `<iframe>` . لكي يعمل هذا ، يجب أن تتطابق السمة `target` للعنصر `<a>` مع سمة `name` الخاصة بـ `<iframe>` . يمكن لأي رابط `<a>` أن يستهدف محتوى عنصر `<iframe>` . بدلاً من إعادة توجيه نافذة المتصفح إلى صفحة الويب المرتبطة ، سيعيد توجيه `<iframe>` . لكي يعمل هذا ، يجب أن تتطابق السمة `target` للعنصر `<a>` مع سمة `name` الخاصة بـ `<iframe>` .
` ```html
<iframe width="560" height="315" src="about:blank" frameborder="0" name="iframe-redir"></iframe> <iframe width="560" height="315" src="about:blank" frameborder="0" name="iframe-redir"></iframe>
<p><a href="https://www.youtube.com/embed/v8kFT4I31es" target="iframe-redir">Redirect the Iframe</a></p> <p><a href="https://www.youtube.com/embed/v8kFT4I31es" target="iframe-redir">Redirect the Iframe</a></p>
` ```
سيعرض هذا المثال علامة `<iframe>` فارغة في البداية ، ولكن عند النقر على الرابط أعلاه ، سيعيد توجيه `<iframe>` لعرض فيديو YouTube. سيعرض هذا المثال علامة `<iframe>` فارغة في البداية ، ولكن عند النقر على الرابط أعلاه ، سيعيد توجيه `<iframe>` لعرض فيديو YouTube.

View File

@ -16,7 +16,7 @@ HTML5 يقدم مجموعة من العناصر الدلالية. على الر
## مثال بسيط على مستند HTML ## مثال بسيط على مستند HTML
` ```html
<!DOCTYPE html> <!DOCTYPE html>
<html> <html>
<head> <head>
@ -29,7 +29,7 @@ HTML5 يقدم مجموعة من العناصر الدلالية. على الر
</body> </body>
</html> </html>
` ```
DOCTYPE html: يحدد هذا المستند ليكون HTML5 DOCTYPE html: يحدد هذا المستند ليكون HTML5

View File

@ -38,7 +38,8 @@ localeTitle: تخطيطات
تقدم HTML5 عناصر دلالية دلالية تحدد الأجزاء المختلفة لصفحة الويب: تقدم HTML5 عناصر دلالية دلالية تحدد الأجزاء المختلفة لصفحة الويب:
`<header> - Defines a header for a document or a section ```
<header> - Defines a header for a document or a section
<nav> - Defines a container for navigation links <nav> - Defines a container for navigation links
<section> - Defines a section in a document <section> - Defines a section in a document
<article> - Defines an independent self-contained article <article> - Defines an independent self-contained article
@ -46,7 +47,7 @@ localeTitle: تخطيطات
<footer> - Defines a footer for a document or a section <footer> - Defines a footer for a document or a section
<details> - Defines additional details <details> - Defines additional details
<summary> - Defines a heading for the <details> element <summary> - Defines a heading for the <details> element
` ```
#### معلومات اكثر: #### معلومات اكثر:

View File

@ -22,12 +22,13 @@ localeTitle: قوائم
تتم كتابة قائمة مرتبة ك تتم كتابة قائمة مرتبة ك
`<ol> ```HTML
<ol>
<li>January</li> <li>January</li>
<li>February</li> <li>February</li>
<li>March</li> <li>March</li>
</ol> </ol>
` ```
ويتم عرضها على النحو التالي: ويتم عرضها على النحو التالي:
@ -37,12 +38,13 @@ localeTitle: قوائم
قائمة غير مرتبة مكتوبة باسم قائمة غير مرتبة مكتوبة باسم
`<ul> ```HTML
<ul>
<li>Macintosh</li> <li>Macintosh</li>
<li>Fuji</li> <li>Fuji</li>
<li>Gala</li> <li>Gala</li>
</ul> </ul>
` ```
ويتم عرضها على النحو التالي: ويتم عرضها على النحو التالي:
@ -56,20 +58,22 @@ localeTitle: قوائم
إزالة الرموز النقطية: إزالة الرموز النقطية:
`ul { ```CSS
ul {
list-style: none; list-style: none;
} }
` ```
قم بإدخال الخاص بك: قم بإدخال الخاص بك:
`ul li::before { ```CSS
ul li::before {
content: "\2022"; content: "\2022";
color: orange; color: orange;
display: inline-block; display: inline-block;
width: 1em; width: 1em;
} }
` ```
يضيف نمط المحتوى نقطية جديدة بينما يعمل نمط العرض والعرض على إنشاء مسافة بين الرمز النقطي والكلمة. يمكن تطبيق أنماط الخطوط العادية هنا إذا كنت ترغب في جعل الرمز النقطي أكبر أو أكثر جرأة. يضيف نمط المحتوى نقطية جديدة بينما يعمل نمط العرض والعرض على إنشاء مسافة بين الرمز النقطي والكلمة. يمكن تطبيق أنماط الخطوط العادية هنا إذا كنت ترغب في جعل الرمز النقطي أكبر أو أكثر جرأة.
@ -79,13 +83,14 @@ localeTitle: قوائم
في ما يلي مثال لقائمة الوصف: في ما يلي مثال لقائمة الوصف:
`<dl> ```HTML
<dl>
<dt>Programming</dt> <dt>Programming</dt>
<dd>The process of writing computer programs.</dd> <dd>The process of writing computer programs.</dd>
<dt>freeCodeCamp</dt> <dt>freeCodeCamp</dt>
<dd>An awesome non-profit organization teaching people how to code.</dd> <dd>An awesome non-profit organization teaching people how to code.</dd>
</dl> </dl>
` ```
والتي من شأنها أن تبدو وكأنها: والتي من شأنها أن تبدو وكأنها:

View File

@ -8,9 +8,9 @@ localeTitle: روابط Mailto
### بناء الجملة الأساسي مع المستلم هو: ### بناء الجملة الأساسي مع المستلم هو:
` ```html
<a href="mailto:friend@something.com">Some text</a> <a href="mailto:friend@something.com">Some text</a>
` ```
### مزيد من التخصيص! ### مزيد من التخصيص!
@ -32,9 +32,9 @@ Body: أكون مطورًا
رابط html الآن: رابط html الآن:
` ```html
<a href="mailto:?subject=Great%20news&body=I%20am%20becoming%20a%20developer">Send mail!</a> <a href="mailto:?subject=Great%20news&body=I%20am%20becoming%20a%20developer">Send mail!</a>
` ```
هنا ، تركنا mailto فارغة (mailto :؟). سيؤدي ذلك إلى فتح عميل البريد الإلكتروني للمستخدم وسيضيف المستخدم عنوان المستلم نفسه. هنا ، تركنا mailto فارغة (mailto :؟). سيؤدي ذلك إلى فتح عميل البريد الإلكتروني للمستخدم وسيضيف المستخدم عنوان المستلم نفسه.
@ -44,9 +44,9 @@ Body: أكون مطورًا
يجب أن تسبق المعلمات الإضافية `&` . يجب أن تسبق المعلمات الإضافية `&` .
` ```html
<a href="mailto:firstfriend@something.com?subject=Great%20news&cc=secondfriend@something.com,thirdfriend@something.com&bcc=fourthfriend@something.com">Send mail!</a> <a href="mailto:firstfriend@something.com?subject=Great%20news&cc=secondfriend@something.com,thirdfriend@something.com&bcc=fourthfriend@something.com">Send mail!</a>
` ```
#### معلومات اكثر: #### معلومات اكثر:

View File

@ -6,14 +6,14 @@ localeTitle: علامات اختيارية
في HTML5 ، يمكنك تجاهل بعض علامات الفتح والإغلاق تحت شروط معينة. على سبيل المثال ، كود HTML التالي ... في HTML5 ، يمكنك تجاهل بعض علامات الفتح والإغلاق تحت شروط معينة. على سبيل المثال ، كود HTML التالي ...
` ```html
<!DOCTYPE html> <!DOCTYPE html>
<p>Hello World. <p>Hello World.
` ```
سوف تقيم تلقائيا إلى ... سوف تقيم تلقائيا إلى ...
` ```html
<!DOCTYPE html> <!DOCTYPE html>
<html> <html>
<head></head> <head></head>
@ -22,7 +22,7 @@ localeTitle: علامات اختيارية
</p> </p>
</body> </body>
</html> </html>
` ```
مواصفات العلامة الاختيارية لعلامات HTML5 الأكثر شيوعًا هي كالتالي: مواصفات العلامة الاختيارية لعلامات HTML5 الأكثر شيوعًا هي كالتالي:

View File

@ -6,7 +6,8 @@ localeTitle: هيكل الصفحة
لإنشاء صفحاتك في `HTML` ، تحتاج إلى معرفة كيفية تنظيم صفحة `HTML` ، حيث أن هيكلية الصفحة تتبع الترتيب التالي: لإنشاء صفحاتك في `HTML` ، تحتاج إلى معرفة كيفية تنظيم صفحة `HTML` ، حيث أن هيكلية الصفحة تتبع الترتيب التالي:
`<!DOCTYPE html> ```HTML
<!DOCTYPE html>
<html> <html>
<head> <head>
<title>Title of the Page</title> <title>Title of the Page</title>
@ -15,7 +16,7 @@ localeTitle: هيكل الصفحة
<!-- Content --> <!-- Content -->
</body> </body>
</html> </html>
` ```
1 - يجب أن تكون العبارة `<!DOCTYPE html>` دائما أول من يظهر على صفحة `HTML` وتخبر المتصفح بنسخة اللغة المستخدمة. في هذه الحالة ، نعمل باستخدام `HTML5` . 1 - يجب أن تكون العبارة `<!DOCTYPE html>` دائما أول من يظهر على صفحة `HTML` وتخبر المتصفح بنسخة اللغة المستخدمة. في هذه الحالة ، نعمل باستخدام `HTML5` .

View File

@ -17,20 +17,22 @@ localeTitle: تصميم الويب سريع الاستجابة
تخبر استعلامات الوسائط متصفح الويب بتجاهل أو استبدال خصائص صفحة الويب استنادًا إلى سمات معينة مثل عرض الشاشة أو ما إذا كان المستخدم يطبع. تخبر استعلامات الوسائط متصفح الويب بتجاهل أو استبدال خصائص صفحة الويب استنادًا إلى سمات معينة مثل عرض الشاشة أو ما إذا كان المستخدم يطبع.
`@media (query) { ```
@media (query) {
/* The browser will use the CSS rules within the curly braces when the query is true */ /* The browser will use the CSS rules within the curly braces when the query is true */
} }
` ```
يقوم المثال التالي بتعيين `padding-left` و `padding-right` داخل الطبقة الداخلية `more-padding` عندما يكون عرض الشاشة أقل من أو يساوي 768 بكسل. يقوم المثال التالي بتعيين `padding-left` و `padding-right` داخل الطبقة الداخلية `more-padding` عندما يكون عرض الشاشة أقل من أو يساوي 768 بكسل.
`@media screen and (max-width: 768px) { ```
@media screen and (max-width: 768px) {
.more-padding { .more-padding {
padding-left: 10px; padding-left: 10px;
padding-right: 10px; padding-right: 10px;
} }
} }
` ```
### 2\. أطر CSS ### 2\. أطر CSS
@ -38,9 +40,9 @@ localeTitle: تصميم الويب سريع الاستجابة
في هذا المثال ، يحدد `col-md-9` و `col-sm-6` عرض علامة `<div>` استنادًا إلى ما إذا كانت الشاشة صغيرة أم متوسطة. في هذا المثال ، يحدد `col-md-9` و `col-sm-6` عرض علامة `<div>` استنادًا إلى ما إذا كانت الشاشة صغيرة أم متوسطة.
` ```html
<div class="col-12 col-md-6"></div> <div class="col-12 col-md-6"></div>
` ```
يقسم إطار Bootstrap الصف إلى اثني عشر عمودًا. في المثال أعلاه ، سوف ينتشر `<div>` عبر تسعة أو ستة منهم. يعد نظام الشبكة ، الموضح أدناه ، أمرًا أساسيًا في كيفية تسهيل Bootstrap للتصميم سريع الاستجابة. يقسم إطار Bootstrap الصف إلى اثني عشر عمودًا. في المثال أعلاه ، سوف ينتشر `<div>` عبر تسعة أو ستة منهم. يعد نظام الشبكة ، الموضح أدناه ، أمرًا أساسيًا في كيفية تسهيل Bootstrap للتصميم سريع الاستجابة.

View File

@ -10,7 +10,7 @@ localeTitle: توسيط صورة باستخدام Text Align Center
### مثال ### مثال
` ```html
<!DOCTYPE html> <!DOCTYPE html>
<html> <html>
<head> <head>
@ -27,11 +27,11 @@ localeTitle: توسيط صورة باستخدام Text Align Center
</div> </div>
</body> </body>
</html> </html>
` ```
**ملاحظة:** يجب أن يكون العنصر الرئيسي عنصر كتلة. إذا لم يكن عنصر كتلة ، يجب عليك إضافة `display: block;` خاصية CSS مع خاصية `text-align` . **ملاحظة:** يجب أن يكون العنصر الرئيسي عنصر كتلة. إذا لم يكن عنصر كتلة ، يجب عليك إضافة `display: block;` خاصية CSS مع خاصية `text-align` .
` ```html
<!DOCTYPE html> <!DOCTYPE html>
<html> <html>
<head> <head>
@ -49,7 +49,7 @@ localeTitle: توسيط صورة باستخدام Text Align Center
</span> </span>
</body> </body>
</html> </html>
` ```
**العرض التوضيحي:** [Codepen](https://codepen.io/aravindio/pen/PJMXbp) **العرض التوضيحي:** [Codepen](https://codepen.io/aravindio/pen/PJMXbp)

View File

@ -18,11 +18,11 @@ localeTitle: تضمين مقاطع الفيديو على Youtube
* عنصر `<frame>` (لا تنسى إغلاقه!) * عنصر `<frame>` (لا تنسى إغلاقه!)
* سمات `width` `height` * سمات `width` `height`
` ```html
<iframe width="420" height="315" <iframe width="420" height="315"
src="https://www.youtube.com/watch?v=v8kFT4I31es"> src="https://www.youtube.com/watch?v=v8kFT4I31es">
</iframe> </iframe>
` ```
يتم إدراج القيم المدرجة ، ولكن لا تتردد في تغييرها بالطريقة التي تريدها. يتم إدراج القيم المدرجة ، ولكن لا تتردد في تغييرها بالطريقة التي تريدها.
@ -30,8 +30,8 @@ localeTitle: تضمين مقاطع الفيديو على Youtube
ماذا يجب أن نفعل إذا كنا نرغب في جعل هذا اللاعب يبدأ اللعب تلقائيًا؟ ما عليك سوى الإضافة إلى قيمة الرابط `?autoplay=1` . ولكن كن حذرًا ، فقد يكون الأمر مزعجًا بالنسبة إلى الكثير من الأشخاص الذين يزورون صفحتك على الويب. ماذا يجب أن نفعل إذا كنا نرغب في جعل هذا اللاعب يبدأ اللعب تلقائيًا؟ ما عليك سوى الإضافة إلى قيمة الرابط `?autoplay=1` . ولكن كن حذرًا ، فقد يكون الأمر مزعجًا بالنسبة إلى الكثير من الأشخاص الذين يزورون صفحتك على الويب.
` ```html
<iframe width="420" height="315" <iframe width="420" height="315"
src="https://www.youtube.com/watch?v=v8kFT4I31es?autoplay=1"> src="https://www.youtube.com/watch?v=v8kFT4I31es?autoplay=1">
</iframe> </iframe>
` ```

View File

@ -8,27 +8,27 @@ localeTitle: كيفية إنشاء زر HTML التي تعمل مثل الارت
إحدى الطرق هي ببساطة لف علامة `<button>` في علامة `<a>` : إحدى الطرق هي ببساطة لف علامة `<button>` في علامة `<a>` :
` ```html
<a href='https://www.freecodecamp.org/'><button>Link To freeCodeCamp</button></a> <a href='https://www.freecodecamp.org/'><button>Link To freeCodeCamp</button></a>
` ```
يؤدي هذا إلى تحويل الزر بالكامل إلى رابط. يؤدي هذا إلى تحويل الزر بالكامل إلى رابط.
الخيار الثاني هو إنشاء الرابط الخاص بك كما تفعل عادةً مع العلامة `<a>` ثم إعداده عبر CSS: الخيار الثاني هو إنشاء الرابط الخاص بك كما تفعل عادةً مع العلامة `<a>` ثم إعداده عبر CSS:
` ```html
<a href='https://www.freecodecamp.org/'>Link To freeCodeCamp</a> <a href='https://www.freecodecamp.org/'>Link To freeCodeCamp</a>
` ```
بمجرد إنشاء الرابط ، يمكنك استخدام CSS لجعله يبدو وكأنه زر. على سبيل المثال ، يمكنك إضافة حد ولون خلفية وبعض الأنماط عندما يحوم المستخدم في الرابط ... بمجرد إنشاء الرابط ، يمكنك استخدام CSS لجعله يبدو وكأنه زر. على سبيل المثال ، يمكنك إضافة حد ولون خلفية وبعض الأنماط عندما يحوم المستخدم في الرابط ...
هناك طريقة أخرى لإضافة زر وهي التفاف `input` داخل علامات `form` . حدد عنوان URL الهدف المطلوب في سمة إجراء النموذج. هناك طريقة أخرى لإضافة زر وهي التفاف `input` داخل علامات `form` . حدد عنوان URL الهدف المطلوب في سمة إجراء النموذج.
` ```html
<form action="http://google.com"> <form action="http://google.com">
<input type="submit" value="Go to Google" /> <input type="submit" value="Go to Google" />
</form> </form>
` ```
#### معلومات اكثر: #### معلومات اكثر:

View File

@ -8,7 +8,7 @@ localeTitle: كيفية توسيط علامة Div في علامة Div أخرى
لنبدأ بإنشاء علامتين div مع فئتي "parent" و "child". سيكون الوالد الحاوية لدينا ، وسيكون الطفل هو `<div>` الذي نركز عليه أفقيًا. لنبدأ بإنشاء علامتين div مع فئتي "parent" و "child". سيكون الوالد الحاوية لدينا ، وسيكون الطفل هو `<div>` الذي نركز عليه أفقيًا.
` ```html
<!DOCTYPE html> <!DOCTYPE html>
<html> <html>
<head> <head>
@ -23,7 +23,7 @@ localeTitle: كيفية توسيط علامة Div في علامة Div أخرى
</div> </div>
</body> </body>
</html> </html>
` ```
هناك عدة طرق يمكنك من خلالها معالجة هذا الأمر ، ولكن دعنا نركز على هذا البرنامج التعليمي على اثنين. سنقوم في `flexbox` باستخدام `<div>` باستخدام `margin` وفي الثانية سنستخدم `flexbox` . هناك عدة طرق يمكنك من خلالها معالجة هذا الأمر ، ولكن دعنا نركز على هذا البرنامج التعليمي على اثنين. سنقوم في `flexbox` باستخدام `<div>` باستخدام `margin` وفي الثانية سنستخدم `flexbox` .
@ -31,7 +31,8 @@ localeTitle: كيفية توسيط علامة Div في علامة Div أخرى
إذا قمت بتحديد `width` على div div ، يمكنك استخدام `margin: auto` . سيؤدي هذا إلى توسيط طفلك `<div>` عن طريق توزيع هوامش اليسار واليمين بالتساوي. إذا قمت بتحديد `width` على div div ، يمكنك استخدام `margin: auto` . سيؤدي هذا إلى توسيط طفلك `<div>` عن طريق توزيع هوامش اليسار واليمين بالتساوي.
`.parent { ```css
.parent {
border: 2px solid red; border: 2px solid red;
} }
@ -40,7 +41,7 @@ localeTitle: كيفية توسيط علامة Div في علامة Div أخرى
margin: auto; margin: auto;
border: 1px solid black; border: 1px solid black;
} }
` ```
### مثال على توسيط علامة Div مع Flexbox ### مثال على توسيط علامة Div مع Flexbox
@ -48,7 +49,8 @@ localeTitle: كيفية توسيط علامة Div في علامة Div أخرى
لتوسيط طفل `<div>` باستخدام flexbox ، يلزمك استخدام `display: flex` مع `justify-content: center` الضبط `justify-content: center` على الأصل `<div>` . لتوسيط طفل `<div>` باستخدام flexbox ، يلزمك استخدام `display: flex` مع `justify-content: center` الضبط `justify-content: center` على الأصل `<div>` .
`.parent { ```css
.parent {
display: flex; display: flex;
justify-content: center; justify-content: center;
border: 2px solid red; border: 2px solid red;
@ -57,7 +59,7 @@ localeTitle: كيفية توسيط علامة Div في علامة Div أخرى
.centered-child { .centered-child {
border: 1px solid black; border: 1px solid black;
} }
` ```
#### معلومات اكثر: #### معلومات اكثر:

View File

@ -16,15 +16,15 @@ localeTitle: كيفية استخدام الروابط
في HTML ، يتم تعريف الارتباطات بالعلامة: في HTML ، يتم تعريف الارتباطات بالعلامة:
` ```html
<a href="url">link text</a> <a href="url">link text</a>
` ```
مثال مثال
` ```html
<a href="https://www.freecodecamp.org/">Visit our site for tutorials</a> <a href="https://www.freecodecamp.org/">Visit our site for tutorials</a>
` ```
تحدد السمة href عنوان الوجهة (https://www.freecodecamp.org) للرابط. تحدد السمة href عنوان الوجهة (https://www.freecodecamp.org) للرابط.

View File

@ -12,13 +12,13 @@ localeTitle: كيفية استخدام القوائم
##### الشفرة ##### الشفرة
` ```html
<ol> <ol>
<li>Mix ingredients</li> <li>Mix ingredients</li>
<li>Bake in oven for an hour</li> <li>Bake in oven for an hour</li>
<li>Allow to stand for ten minutes</li> <li>Allow to stand for ten minutes</li>
</ol> </ol>
` ```
##### مثال ##### مثال
@ -32,13 +32,13 @@ localeTitle: كيفية استخدام القوائم
##### الشفرة ##### الشفرة
` ```html
<ul> <ul>
<li>Chocolate Cake</li> <li>Chocolate Cake</li>
<li>Black Forest Cake</li> <li>Black Forest Cake</li>
<li>Pineapple Cake</li> <li>Pineapple Cake</li>
</ul> </ul>
` ```
#### مثال #### مثال
@ -52,14 +52,14 @@ localeTitle: كيفية استخدام القوائم
##### الشفرة ##### الشفرة
` ```html
<dl> <dl>
<dt>Bread</dt> <dt>Bread</dt>
<dd>A baked food made of flour.</dd> <dd>A baked food made of flour.</dd>
<dt>Coffee</dt> <dt>Coffee</dt>
<dd>A drink made from roasted coffee beans.</dd> <dd>A drink made from roasted coffee beans.</dd>
</dl> </dl>
` ```
##### انتاج | ##### انتاج |

View File

@ -12,33 +12,33 @@ localeTitle: الصور في HTML
## مثال ## مثال
` ```html
<img src="URL of the Image" alt="Descriptive Title" /> <img src="URL of the Image" alt="Descriptive Title" />
` ```
### لتحديد ارتفاع وعرض صورة ، يمكنك استخدام سمة الارتفاع والعرض: ### لتحديد ارتفاع وعرض صورة ، يمكنك استخدام سمة الارتفاع والعرض:
` ```html
<img src="URL of the Image" alt="Descriptive Title" height="100" width="150"/> <img src="URL of the Image" alt="Descriptive Title" height="100" width="150"/>
` ```
### يمكنك أيضًا تحديد سمك الحدود (0 يعني عدم وجود حد): ### يمكنك أيضًا تحديد سمك الحدود (0 يعني عدم وجود حد):
` ```html
<img src="URL of the Image" alt="Descriptive Title" border="2"/> <img src="URL of the Image" alt="Descriptive Title" border="2"/>
` ```
### محاذاة صورة: ### محاذاة صورة:
` ```html
<img src="URL of the Image" alt="Descriptive Title" align="left"/> <img src="URL of the Image" alt="Descriptive Title" align="left"/>
` ```
### يمكنك أيضًا استخدام الأنماط في سمة نمط: ### يمكنك أيضًا استخدام الأنماط في سمة نمط:
` ```html
<img src="URL of the Image" alt="Descriptive Title" style="width: 100px; height: 150px;"/> <img src="URL of the Image" alt="Descriptive Title" style="width: 100px; height: 150px;"/>
` ```
#### معلومات اكثر #### معلومات اكثر

View File

@ -10,8 +10,9 @@ localeTitle: تنسيق النص في HTML
يمكنك بسهولة تغيير معنى النص الخاص بك باستخدام عنصر `<b>` HTML. يجعل الكلمات جريئة ، والتي تعمل على إفراد جزء التسلسل. فمثلا: يمكنك بسهولة تغيير معنى النص الخاص بك باستخدام عنصر `<b>` HTML. يجعل الكلمات جريئة ، والتي تعمل على إفراد جزء التسلسل. فمثلا:
`The most important part of your code is <b>the end</b>, because if you <b>don't close</b> the element, it will affect to <b>everything</b>! ```
` The most important part of your code is <b>the end</b>, because if you <b>don't close</b> the element, it will affect to <b>everything</b>!
```
يمكنك أيضًا استخدام `<strong>` أيضًا - إنها تضيف أيضًا أهمية "قوية" دلالية. لا يتعرف متصفحك على فرق بين هذين العنصرين ، ولكنه موجود. يمكنك أيضًا استخدام `<strong>` أيضًا - إنها تضيف أيضًا أهمية "قوية" دلالية. لا يتعرف متصفحك على فرق بين هذين العنصرين ، ولكنه موجود.
@ -19,8 +20,9 @@ localeTitle: تنسيق النص في HTML
عادة ما تستخدم عند اقتباس شيء ما أو وضع ترجمة للكلمة في الكثير من المقالات. يجعلها مائلة - فقط تخيل ركلها قليلاً في الأحرف الصحيحة. فمثلا: عادة ما تستخدم عند اقتباس شيء ما أو وضع ترجمة للكلمة في الكثير من المقالات. يجعلها مائلة - فقط تخيل ركلها قليلاً في الأحرف الصحيحة. فمثلا:
`Theatre - <i>teatos</i>, <i>teates</i> and <i>teatron</i>. ```
` Theatre - <i>teatos</i>, <i>teates</i> and <i>teatron</i>.
```
يمكنك أيضًا استخدام `<em>` أيضًا - حيث تضيف أيضًا أهمية دلالية "مؤكدة". لا يتعرف متصفحك على فرق بين هذين العنصرين ، ولكنه موجود. يمكنك أيضًا استخدام `<em>` أيضًا - حيث تضيف أيضًا أهمية دلالية "مؤكدة". لا يتعرف متصفحك على فرق بين هذين العنصرين ، ولكنه موجود.

View File

@ -24,9 +24,10 @@ localeTitle: مرجع ترميز Url
#### مثال: #### مثال:
`encodeURI(Free Code Camp); ```js
encodeURI(Free Code Camp);
// Free%20Code%20Camp // Free%20Code%20Camp
` ```
#### معلومات اكثر: #### معلومات اكثر:

View File

@ -25,11 +25,11 @@ UTF 8 هو نظام ترميز يستخدم لترجمة الأحرف التي
حدد علامة وصفية بها مجموعة أحرف من UTF 8 في علامة رأسك. حدد علامة وصفية بها مجموعة أحرف من UTF 8 في علامة رأسك.
` ```html
<head> <head>
<meta charset="utf-8"> <meta charset="utf-8">
</head> </head>
` ```
#### معلومات اكثر: #### معلومات اكثر:

View File

@ -10,22 +10,25 @@ localeTitle: مرحبا العالم في الأيونية
#### 1\. تثبيت `ionic` ، `npm` ، `angular` و `cordova` إذا لم يتم تثبيت. \[انظر المقدمة [الأولى](https://guide.freecodecamp.org/ionic) لمزيد من المعلومات\] #### 1\. تثبيت `ionic` ، `npm` ، `angular` و `cordova` إذا لم يتم تثبيت. \[انظر المقدمة [الأولى](https://guide.freecodecamp.org/ionic) لمزيد من المعلومات\]
`sudo apt-get install nodejs ```shell
sudo apt-get install nodejs
sudo apt-get install npm sudo apt-get install npm
sudo npm install -g ionic cordova sudo npm install -g ionic cordova
` ```
#### 2\. قم بإنشاء مجلد باسم `helloworld` #### 2\. قم بإنشاء مجلد باسم `helloworld`
`ionic start helloworld blank ```shell
` ionic start helloworld blank
```
ملحوظة: حيث أن هذا هو مشروع صغير أدخل لا أو N عند المطالبة أثناء تنفيذ البرنامج. ملحوظة: حيث أن هذا هو مشروع صغير أدخل لا أو N عند المطالبة أثناء تنفيذ البرنامج.
#### 3\. قم بتغيير الدليل إلى `helloworld` \[هذا هو دليلك الأيوني\] #### 3\. قم بتغيير الدليل إلى `helloworld` \[هذا هو دليلك الأيوني\]
`cd helloworld ```shell
` cd helloworld
```
#### 4\. افتح المجلد في محرر النص الخاص بك. سترى مختلف الملفات والمجلدات الفرعية. #### 4\. افتح المجلد في محرر النص الخاص بك. سترى مختلف الملفات والمجلدات الفرعية.

View File

@ -18,8 +18,9 @@ localeTitle: دروس مجردة في جاوة
الطبقة العامة للدراجات النارية يمتد المركبة { ... } الطبقة العامة للدراجات النارية يمتد المركبة { ... }
`You cannot create an object of Vehicle class anywhere in your program. You can however, extend the abstract vehicle class and create objects of the child classes; ```
` You cannot create an object of Vehicle class anywhere in your program. You can however, extend the abstract vehicle class and create objects of the child classes;
```
جافا مركبة جديدة Véhicle = سيارة جديدة () ؛ // غير صالحة سيارة مركبة = سيارة جديدة () ؛ // صالح مركبة mBike = دراجة نارية جديدة () ؛ // صالح جافا مركبة جديدة Véhicle = سيارة جديدة () ؛ // غير صالحة سيارة مركبة = سيارة جديدة () ؛ // صالح مركبة mBike = دراجة نارية جديدة () ؛ // صالح

View File

@ -34,17 +34,19 @@ localeTitle: معدّلات الوصول
على سبيل المثال ، للإعلان عن فئة عامة ، كل ما تحتاج إليه هو: على سبيل المثال ، للإعلان عن فئة عامة ، كل ما تحتاج إليه هو:
`public class Animal{ ```java
public class Animal{
} }
` ```
على هذا النحو ، يمكن الوصول إلى فئة الحيوان من أي فئة أخرى. على هذا النحو ، يمكن الوصول إلى فئة الحيوان من أي فئة أخرى.
`public int age; ```java
public int age;
public int getAge(){ public int getAge(){
} }
` ```
أعلاه هي طرق لتحديد متغير وطريقة عامة. أعلاه هي طرق لتحديد متغير وطريقة عامة.
@ -54,18 +56,20 @@ localeTitle: معدّلات الوصول
على سبيل المثال ، لاستخدام معدِّل الوصول الافتراضي لفئة ما ، يمكنك استخدامه على سبيل المثال ، لاستخدام معدِّل الوصول الافتراضي لفئة ما ، يمكنك استخدامه
`class Bird{ ```java
class Bird{
} }
` ```
هذا يعني أنك تستخدم مودم الوصول الافتراضي. يسمح معدِّل الوصول الافتراضي للمتغير أو الطريقة أو الفئة بالوصول إليها عن طريق الفئات الأخرى داخل الحزمة نفسها. الحزمة عبارة عن مجموعة من الفئات ذات الصلة في دليل الملفات. لمزيد من المعلومات حول الحزم ، راجع قسم الحزم. هذا يعني أنك تستخدم مودم الوصول الافتراضي. يسمح معدِّل الوصول الافتراضي للمتغير أو الطريقة أو الفئة بالوصول إليها عن طريق الفئات الأخرى داخل الحزمة نفسها. الحزمة عبارة عن مجموعة من الفئات ذات الصلة في دليل الملفات. لمزيد من المعلومات حول الحزم ، راجع قسم الحزم.
لا يمكن لأي فئة أخرى خارج الحزمة التي تم الإعلان عنها استخدام أي متغير أو طريقة أو فئة معلن عنها لاستخدام معدِّل الوصول الافتراضي. لا يمكن لأي فئة أخرى خارج الحزمة التي تم الإعلان عنها استخدام أي متغير أو طريقة أو فئة معلن عنها لاستخدام معدِّل الوصول الافتراضي.
`int age; ```java
int age;
void setNewAge(){ void setNewAge(){
} }
` ```
أعلاه هي بعض الطرق لاستخدام معدل الوصول الافتراضي للمتغير أو الطريقة. لا تنس أن معدِّل الوصول الافتراضي لا يحتوي على كلمة أساسية. يعني غياب معدّلات الوصول الثلاثة الأخرى أنك تستخدم معدّل الوصول الافتراضي. أعلاه هي بعض الطرق لاستخدام معدل الوصول الافتراضي للمتغير أو الطريقة. لا تنس أن معدِّل الوصول الافتراضي لا يحتوي على كلمة أساسية. يعني غياب معدّلات الوصول الثلاثة الأخرى أنك تستخدم معدّل الوصول الافتراضي.
@ -81,11 +85,12 @@ localeTitle: معدّلات الوصول
فيما يلي أمثلة لاستخدام معدِّل الوصول المحمي: فيما يلي أمثلة لاستخدام معدِّل الوصول المحمي:
`protected int age; ```java
protected int age;
protected String getName(){ protected String getName(){
return "My Name is You"; return "My Name is You";
} }
` ```
#### الوصول إلى المعدلات في الفصول الدراسية #### الوصول إلى المعدلات في الفصول الدراسية

View File

@ -8,25 +8,29 @@ localeTitle: المصفوفات
**بناء الجملة:** **بناء الجملة:**
`dataType[] arrayName; // preferred way ```java
` dataType[] arrayName; // preferred way
```
هنا ، يصف `java datatype[]` أن جميع المتغيرات التي تم ذكرها بعد ذلك سيتم إنشاء مثيل لها كمصفوفات من نوع البيانات المحدد. لذا ، إذا أردنا إنشاء مزيد من المصفوفات من نوع البيانات المماثل ، فكل ما علينا `java arrayName` هو إضافتها بعد `java arrayName` المحدد (لا تنسى فصلها عبر الفواصل فقط). ويرد مثال أدناه في القسم التالي للرجوع إليه. هنا ، يصف `java datatype[]` أن جميع المتغيرات التي تم ذكرها بعد ذلك سيتم إنشاء مثيل لها كمصفوفات من نوع البيانات المحدد. لذا ، إذا أردنا إنشاء مزيد من المصفوفات من نوع البيانات المماثل ، فكل ما علينا `java arrayName` هو إضافتها بعد `java arrayName` المحدد (لا تنسى فصلها عبر الفواصل فقط). ويرد مثال أدناه في القسم التالي للرجوع إليه.
`dataType arrayName[]; // works but not preferred way ```java
` dataType arrayName[]; // works but not preferred way
```
هنا ، يصف `java datatype` فقط أن المتغيرات المذكورة بعد أن تنتمي إلى هذا النوع من البيانات. إلى جانب ذلك ، يصف `java []` بعد اسم المتغير أن المتغير هو صفيف من نوع البيانات المحدد (وليس مجرد قيمة أو كائن من هذا النوع من البيانات). لذا ، إذا أردنا إنشاء مزيد من المصفوفات من نوع البيانات المماثل ، فسوف نضيف أسماء المتغيرات بعد الاسم المحدد بالفعل ، مفصولة بفواصل وكل مرة سيتعين علينا إضافة `java []` بعد اسم المتغير وإلا فسيكون المتغير إنشاء مثيل كمتغير تخزين قيمة عادية (وليس صفيف). لفهم أفضل يتم إعطاء مثال في المقطع التالي. هنا ، يصف `java datatype` فقط أن المتغيرات المذكورة بعد أن تنتمي إلى هذا النوع من البيانات. إلى جانب ذلك ، يصف `java []` بعد اسم المتغير أن المتغير هو صفيف من نوع البيانات المحدد (وليس مجرد قيمة أو كائن من هذا النوع من البيانات). لذا ، إذا أردنا إنشاء مزيد من المصفوفات من نوع البيانات المماثل ، فسوف نضيف أسماء المتغيرات بعد الاسم المحدد بالفعل ، مفصولة بفواصل وكل مرة سيتعين علينا إضافة `java []` بعد اسم المتغير وإلا فسيكون المتغير إنشاء مثيل كمتغير تخزين قيمة عادية (وليس صفيف). لفهم أفضل يتم إعطاء مثال في المقطع التالي.
## مقتطفات الشفرة للبناء أعلاه: ## مقتطفات الشفرة للبناء أعلاه:
`double[] list1, list2; // preferred way ```java
` double[] list1, list2; // preferred way
```
فوق المقتطف التعليمات البرمجية instantiates 2 صفائف من أسماء مزدوجة النوع list1 و list2. فوق المقتطف التعليمات البرمجية instantiates 2 صفائف من أسماء مزدوجة النوع list1 و list2.
`double list1[], list2; // works but not preferred way ```java
` double list1[], list2; // works but not preferred way
```
فوق المقتطف الشفوي مصفوفة من نوع البيانات مزدوج المسمى list1 ومتغير بسيط من نوع البيانات مزدوج المسمى list2 (لا تخلط مع قائمة **name2** . أسماء المتغيرات لا علاقة لها بنوع المتغير). فوق المقتطف الشفوي مصفوفة من نوع البيانات مزدوج المسمى list1 ومتغير بسيط من نوع البيانات مزدوج المسمى list2 (لا تخلط مع قائمة **name2** . أسماء المتغيرات لا علاقة لها بنوع المتغير).
@ -34,74 +38,86 @@ localeTitle: المصفوفات
## إنشاء المصفوفات: ## إنشاء المصفوفات:
`dataType[] arrayName = new dataType[arraySize]; ```java
` dataType[] arrayName = new dataType[arraySize];
```
## مقتطفات الشفرة للبناء أعلاه: ## مقتطفات الشفرة للبناء أعلاه:
`double[] List = new double[10]; ```java
` double[] List = new double[10];
```
## طريقة أخرى لإنشاء صفيف: ## طريقة أخرى لإنشاء صفيف:
`dataType[] arrayName = {value_0, value_1, ..., value_k}; ```java
` dataType[] arrayName = {value_0, value_1, ..., value_k};
```
## مقتطفات الشفرة للبناء أعلاه: ## مقتطفات الشفرة للبناء أعلاه:
`double[] list = {1, 2, 3, 4}; ```java
double[] list = {1, 2, 3, 4};
The code above is equivalent to: The code above is equivalent to:
double[] list = new double[4]; double[] list = new double[4];
*IMPORTANT NOTE: Please note the difference between the types of brackets *IMPORTANT NOTE: Please note the difference between the types of brackets
that are used to represent arrays in two different ways. that are used to represent arrays in two different ways.
` ```
## الوصول إلى المصفوفات: ## الوصول إلى المصفوفات:
`arrayName[index]; // gives you the value at the specified index ```java
` arrayName[index]; // gives you the value at the specified index
```
## مقتطفات الشفرة للبناء أعلاه: ## مقتطفات الشفرة للبناء أعلاه:
`System.out.println(list[1]); ```java
` System.out.println(list[1]);
```
انتاج: انتاج:
`2.0 ```
` 2.0
```
## تعديل المصفوفات: ## تعديل المصفوفات:
`arrayName[index] = value; ```java
` arrayName[index] = value;
```
ملاحظة: لا يمكنك تغيير حجم أو نوع الصفيف بعد تهيئته. ملاحظة: يمكنك مع ذلك إعادة ضبط المصفوفة مثل ذلك ملاحظة: لا يمكنك تغيير حجم أو نوع الصفيف بعد تهيئته. ملاحظة: يمكنك مع ذلك إعادة ضبط المصفوفة مثل ذلك
`arrayName = new dataType[] {value1, value2, value3}; ```java
` arrayName = new dataType[] {value1, value2, value3};
```
## حجم المصفوفات: ## حجم المصفوفات:
من الممكن العثور على عدد العناصر في صفيف باستخدام "سمة الطول". تجدر الإشارة هنا إلى أن `java length` هو **سمة** لكل صفيف أي اسم متغير يخزن طول المتغير. يجب عدم الخلط بينه وبين **طريقة** الصفيف لأن الاسم هو نفس طريقة `java length()` المطابقة لفئات String. من الممكن العثور على عدد العناصر في صفيف باستخدام "سمة الطول". تجدر الإشارة هنا إلى أن `java length` هو **سمة** لكل صفيف أي اسم متغير يخزن طول المتغير. يجب عدم الخلط بينه وبين **طريقة** الصفيف لأن الاسم هو نفس طريقة `java length()` المطابقة لفئات String.
`int[] a = {4, 5, 6, 7, 8}; // declare array ```java
int[] a = {4, 5, 6, 7, 8}; // declare array
System.out.println(a.length); //prints 5 System.out.println(a.length); //prints 5
` ```
## مقتطفات الشفرة للبناء أعلاه: ## مقتطفات الشفرة للبناء أعلاه:
`list[1] = 3; // now, if you access the array like above, it will output 3 rather than 2 ```java
` list[1] = 3; // now, if you access the array like above, it will output 3 rather than 2
```
_مثال على الكود:_ _مثال على الكود:_
`int[] a = {4, 5, 6, 7, 8}; // declare array ```java
int[] a = {4, 5, 6, 7, 8}; // declare array
for (int i = 0; i < a.length; i++){ // loop goes through each index for (int i = 0; i < a.length; i++){ // loop goes through each index
System.out.println(a[i]); // prints the array System.out.println(a[i]); // prints the array
} }
` ```
انتاج: انتاج:
@ -116,7 +132,8 @@ _مثال على الكود:_
يمكن اعتبار صفائف ثنائية الأبعاد (صفائف ثنائية الأبعاد) كطاولة ذات صفوف وأعمدة. على الرغم من أن هذا التمثيل هو مجرد طريقة لتصور المجموعة لحل المشاكل بشكل أفضل. يتم تخزين القيم فعليًا في عناوين الذاكرة المتسلسلة فقط. يمكن اعتبار صفائف ثنائية الأبعاد (صفائف ثنائية الأبعاد) كطاولة ذات صفوف وأعمدة. على الرغم من أن هذا التمثيل هو مجرد طريقة لتصور المجموعة لحل المشاكل بشكل أفضل. يتم تخزين القيم فعليًا في عناوين الذاكرة المتسلسلة فقط.
`int M = 5; ```java
int M = 5;
int N = 5; int N = 5;
double[][] a = new double [M][N]; //M = rows N = columns double[][] a = new double [M][N]; //M = rows N = columns
for(int i = 0; i < M; i++) { for(int i = 0; i < M; i++) {
@ -124,7 +141,7 @@ _مثال على الكود:_
//Do something here at index //Do something here at index
} }
} }
` ```
ستنفذ هذه الحلقة M ^ N مرة وستبني هذا: ستنفذ هذه الحلقة M ^ N مرة وستبني هذا:
@ -136,9 +153,10 @@ _مثال على الكود:_
وبالمثل ، يمكن أيضًا إنشاء مصفوفة ثلاثية الأبعاد. يمكن تصوره كمكعبوب بدلاً من مستطيل (كما هو مذكور أعلاه) ، مقسم إلى مكعبات أصغر مع كل مكعب يخزن بعض القيمة. يمكن التهيئة الأولية: وبالمثل ، يمكن أيضًا إنشاء مصفوفة ثلاثية الأبعاد. يمكن تصوره كمكعبوب بدلاً من مستطيل (كما هو مذكور أعلاه) ، مقسم إلى مكعبات أصغر مع كل مكعب يخزن بعض القيمة. يمكن التهيئة الأولية:
`int a=2, b=3, c=4; ```java
int a=2, b=3, c=4;
int[][][] a=new int[a][b][c]; int[][][] a=new int[a][b][c];
` ```
بطريقة مماثلة ، يمكن للمرء أن مجموعة من أبعاد مثل ما هو / هي ترغب في ولكن تصور مجموعة من أكثر من 3 أبعاد يصعب تصور بطريقة معينة. بطريقة مماثلة ، يمكن للمرء أن مجموعة من أبعاد مثل ما هو / هي ترغب في ولكن تصور مجموعة من أكثر من 3 أبعاد يصعب تصور بطريقة معينة.
@ -146,13 +164,14 @@ _مثال على الكود:_
الصفائف الخشنة هي صفائف متعددة الأبعاد لها عدد محدد من الصفوف ولكن عدد الأعمدة متفاوت. يتم استخدام الصفائف الخشنة للحفاظ على استخدام الذاكرة للمصفوفة. فيما يلي مثال الكود: الصفائف الخشنة هي صفائف متعددة الأبعاد لها عدد محدد من الصفوف ولكن عدد الأعمدة متفاوت. يتم استخدام الصفائف الخشنة للحفاظ على استخدام الذاكرة للمصفوفة. فيما يلي مثال الكود:
`int[][] array = new int[5][]; //initialize a 2D array with 5 rows ```java
int[][] array = new int[5][]; //initialize a 2D array with 5 rows
array[0] = new int[1]; //creates 1 column for first row array[0] = new int[1]; //creates 1 column for first row
array[1] = new int[2]; //creates 2 columns for second row array[1] = new int[2]; //creates 2 columns for second row
array[2] = new int[5]; //creates 5 columns for third row array[2] = new int[5]; //creates 5 columns for third row
array[3] = new int[5]; //creates 5 columns for fourth row array[3] = new int[5]; //creates 5 columns for fourth row
array[4] = new int[5]; //creates 5 columns for fifth row array[4] = new int[5]; //creates 5 columns for fifth row
` ```
انتاج: انتاج:

View File

@ -6,8 +6,9 @@ localeTitle: وظائف مدمجة
تحتوي Java أيضًا على العديد من الوظائف المضمنة أو المحددة مسبقاً والتي عادة ما يتم تخزينها في حزم java.lang و java.io ، التي يتم استيرادها تلقائيًا في برامج التحرير مثل BlueJ أو يمكن استيرادها باستخدام Syntax- تحتوي Java أيضًا على العديد من الوظائف المضمنة أو المحددة مسبقاً والتي عادة ما يتم تخزينها في حزم java.lang و java.io ، التي يتم استيرادها تلقائيًا في برامج التحرير مثل BlueJ أو يمكن استيرادها باستخدام Syntax-
`import java.lang.*; ```java
import java.lang.*;
import java.io.*; import java.io.*;
` ```
وتشمل هذه الوظائف التي تجعل مهمة طويلة وصعبة للغاية أن تفعل. وتشمل هذه الوظائف التي تجعل مهمة طويلة وصعبة للغاية أن تفعل.

View File

@ -8,12 +8,14 @@ localeTitle: مجموعات
كما تعمل واجهة المجموعة على توسيع واجهة Iterable ، مما يعني أن كل مجموعة في جافا يجب أن تكون قابلة للتكرار. وهذا بدوره يعني أنه يمكن استخدام حلقة for-each لجلبها في تسلسل. كما تعمل واجهة المجموعة على توسيع واجهة Iterable ، مما يعني أن كل مجموعة في جافا يجب أن تكون قابلة للتكرار. وهذا بدوره يعني أنه يمكن استخدام حلقة for-each لجلبها في تسلسل.
`public interface Collection<E> extends Iterable<E> ```java
` public interface Collection<E> extends Iterable<E>
```
بعض الطرق الأكثر شيوعًا التي توفرها هذه الواجهة هي: بعض الطرق الأكثر شيوعًا التي توفرها هذه الواجهة هي:
`boolean add(E e) // Adds the specified element to the collection if not present and returns true if this collection changed. ```java
boolean add(E e) // Adds the specified element to the collection if not present and returns true if this collection changed.
void clear() // Removes all the elements from the collection. void clear() // Removes all the elements from the collection.
@ -24,7 +26,7 @@ localeTitle: مجموعات
boolean remove(Object o) // Removes the specifies element and return true on successful removal else false. boolean remove(Object o) // Removes the specifies element and return true on successful removal else false.
int size() // Returns number of items in the collection. int size() // Returns number of items in the collection.
` ```
يجب تنفيذ هذه الطرق وغيرها من الطرق المختلفة من خلال أي واجهة تطبيق جماعية. يجب تنفيذ هذه الطرق وغيرها من الطرق المختلفة من خلال أي واجهة تطبيق جماعية.
@ -46,21 +48,24 @@ localeTitle: مجموعات
**قم بإنشاء LinkedList** **قم بإنشاء LinkedList**
`LinkedList<Integer> intList = new LinkedList<Integer>(); // Creates a new list of Integer objects. ```java
` LinkedList<Integer> intList = new LinkedList<Integer>(); // Creates a new list of Integer objects.
```
يمكنك أيضًا إنشاء قائمة بأي نوع كائن آخر. على سبيل المثال. يمكنك أيضًا إنشاء قائمة بأي نوع كائن آخر. على سبيل المثال.
`LinkedList<String> stringList = new LinkedList(); ```java
LinkedList<String> stringList = new LinkedList();
LinkedList<LinkedList<Integer>> listOfList = new LinkedList(); LinkedList<LinkedList<Integer>> listOfList = new LinkedList();
` ```
ملاحظة: تم تحويل جميع المجموعات في Java إلى أنواع عامة منذ 1.5 JDK ملاحظة: تم تحويل جميع المجموعات في Java إلى أنواع عامة منذ 1.5 JDK
**إضافة عناصر إلى القائمة** **إضافة عناصر إلى القائمة**
`intList.add(new Integer(1)); // Add 1 to the end. ```java
intList.add(new Integer(1)); // Add 1 to the end.
intList.add(2); // This works as Java provides autoboxing and unboxing of primitive datatypes and their respective wrapper classes intList.add(2); // This works as Java provides autoboxing and unboxing of primitive datatypes and their respective wrapper classes
@ -69,12 +74,13 @@ localeTitle: مجموعات
intList.addLast(2); // Add to the end of the list intList.addLast(2); // Add to the end of the list
intList.add(2, 5); // Add element 5 at index 2 intList.add(2, 5); // Add element 5 at index 2
` ```
دعونا نطبع القائمة دعونا نطبع القائمة
`System.out.println(intList); // toString() method is automatically called on the list ```java
` System.out.println(intList); // toString() method is automatically called on the list
```
انتاج: \[3 ، 1 ، 5 ، 2 ، 2\] انتاج: \[3 ، 1 ، 5 ، 2 ، 2\]
@ -95,19 +101,21 @@ localeTitle: مجموعات
بما أن جافا لا توفر منفصلة بما أن جافا لا توفر منفصلة
`intList.push(5); // Add element to the end of list. Works same as addLast() ```java
intList.push(5); // Add element to the end of list. Works same as addLast()
intList.pop(); // Removes and returns the last element of the list. intList.pop(); // Removes and returns the last element of the list.
` ```
**إزالة العناصر من القائمة** **إزالة العناصر من القائمة**
`intList.remove(3); // Removes the element at index 3 of the list ```java
intList.remove(3); // Removes the element at index 3 of the list
intList.removeFirst(); // Removes first element of the list intList.removeFirst(); // Removes first element of the list
intList.removeLast(); // Removes last element of the list intList.removeLast(); // Removes last element of the list
` ```
ملاحظة: جميع الطرق المذكورة أعلاه لإزالة وجلب عنصر إرجاع NoSuchElementException في قائمة فارغة. ملاحظة: جميع الطرق المذكورة أعلاه لإزالة وجلب عنصر إرجاع NoSuchElementException في قائمة فارغة.

View File

@ -16,8 +16,9 @@ localeTitle: تعليقات في جافا
لإنشاء خط تعليق واحد فقط إضافة اثنين `//` مائلة قبل النص. لإنشاء خط تعليق واحد فقط إضافة اثنين `//` مائلة قبل النص.
`// This is how single line comment looks like ```java
` // This is how single line comment looks like
```
#### 2\. تعليق متعدد الخط #### 2\. تعليق متعدد الخط

View File

@ -8,16 +8,18 @@ localeTitle: الصانعين
عند كتابة فصل دراسي بدون أي مُنشئ ، ينشئ المحول البرمجي لـ Java مُنشئًا افتراضيًا: عند كتابة فصل دراسي بدون أي مُنشئ ، ينشئ المحول البرمجي لـ Java مُنشئًا افتراضيًا:
`public class Car { ```java
public class Car {
private String name; private String name;
} }
Car modelS = new Car(); Car modelS = new Car();
` ```
هذا التهيئة بدون معلمات هي طريقة استدعاء المُنشئ الافتراضي. يمكنك أيضًا الحصول على مُنشئ افتراضي مكتوب بهذه الطريقة: هذا التهيئة بدون معلمات هي طريقة استدعاء المُنشئ الافتراضي. يمكنك أيضًا الحصول على مُنشئ افتراضي مكتوب بهذه الطريقة:
`public class Car { ```java
public class Car {
private String name; private String name;
// User Specified Default Constructor // User Specified Default Constructor
@ -25,7 +27,7 @@ localeTitle: الصانعين
name = "Tesla"; name = "Tesla";
} }
} }
` ```
ثم ، عند استدعاء `new Car()` ، سيتم الحصول على تهيئة `name` المتغير تلقائيًا إلى "Tesla" لمثيل كائن السيارة هذا. ثم ، عند استدعاء `new Car()` ، سيتم الحصول على تهيئة `name` المتغير تلقائيًا إلى "Tesla" لمثيل كائن السيارة هذا.
@ -43,7 +45,8 @@ localeTitle: الصانعين
دعونا ننظر في مثال آخر. لنفترض أن شركة هوندا (الشركة المصنعة للسيارات) تريد أن يتم تسمية جميع سياراتها باسم `Honda <a name>` . من أجل تنفيذ ذلك ، قد نمثل هذا باستخدام فئة على النحو التالي: دعونا ننظر في مثال آخر. لنفترض أن شركة هوندا (الشركة المصنعة للسيارات) تريد أن يتم تسمية جميع سياراتها باسم `Honda <a name>` . من أجل تنفيذ ذلك ، قد نمثل هذا باستخدام فئة على النحو التالي:
`public class Car { ```java
public class Car {
private String name; private String name;
@ -61,7 +64,7 @@ localeTitle: الصانعين
System.out.println( car.getName() ); System.out.println( car.getName() );
} }
} }
` ```
![:rocket:](//forum.freecodecamp.com/images/emoji/emoji_one/rocket.png?v=2 ":صاروخ:") [تشغيل الكود](https://repl.it/CTJ4/1) ![:rocket:](//forum.freecodecamp.com/images/emoji/emoji_one/rocket.png?v=2 ":صاروخ:") [تشغيل الكود](https://repl.it/CTJ4/1)
@ -92,8 +95,9 @@ localeTitle: الصانعين
لاحظ أن منشئ `private` . هذا يفرض حقيقة أنه لا يسمح لأي شخص آخر بإنشاء مثيل للبنك. لاحظ أن منشئ `private` . هذا يفرض حقيقة أنه لا يسمح لأي شخص آخر بإنشاء مثيل للبنك.
في الواقع ، إذا كنت في فصل آخر ، فحاول: في الواقع ، إذا كنت في فصل آخر ، فحاول:
`Bank account = new Bank(); // Throws a compilation error: Bank() has private access in Bank. ```java
` Bank account = new Bank(); // Throws a compilation error: Bank() has private access in Bank.
```
لذلك ، الطريقة الوحيدة للوصول إلى المثيل باستخدام `Bank.getInstance()` . تسمى مثل هذه الحالات `Singleton` منذ أن تحصل على مثيل واحد بالضبط (لكل VM لتكون دقيقة) طوال فترة تطبيقك. لذلك ، الطريقة الوحيدة للوصول إلى المثيل باستخدام `Bank.getInstance()` . تسمى مثل هذه الحالات `Singleton` منذ أن تحصل على مثيل واحد بالضبط (لكل VM لتكون دقيقة) طوال فترة تطبيقك.

View File

@ -29,7 +29,8 @@ localeTitle: تدفق التحكم
يعد التبديل خيارًا بديلًا `if...else` إنشاء `if...else` عند وجود قيم وحالات متعددة للتحقق منها. يعد التبديل خيارًا بديلًا `if...else` إنشاء `if...else` عند وجود قيم وحالات متعددة للتحقق منها.
`switch( <integer / String / Enum > ){ ```java
switch( <integer / String / Enum > ){
case <int/String/Enum>: case <int/String/Enum>:
<statements> <statements>
break; break;
@ -39,11 +40,12 @@ localeTitle: تدفق التحكم
default: default:
<statements> <statements>
} }
` ```
ملاحظة: `falls through` تدفق البرنامج `falls through` `case` التالية إذا كان بيان `break` مفقودًا. على سبيل المثال ، دعنا نقول أنك تقول "مرحباً" لكل شخص في المكتب ، لكنك لطيف جداً للفتاة التي تجلس إلى جانبك وتسمع صوت غاضب إلى رئيسك في العمل. طريقة التمثيل ستكون شيئًا مثل: ملاحظة: `falls through` تدفق البرنامج `falls through` `case` التالية إذا كان بيان `break` مفقودًا. على سبيل المثال ، دعنا نقول أنك تقول "مرحباً" لكل شخص في المكتب ، لكنك لطيف جداً للفتاة التي تجلس إلى جانبك وتسمع صوت غاضب إلى رئيسك في العمل. طريقة التمثيل ستكون شيئًا مثل:
`switch(person){ ```java
switch(person){
case 'boss': case 'boss':
soundGrumpy(); soundGrumpy();
break; break;
@ -56,7 +58,7 @@ localeTitle: تدفق التحكم
default: default:
soundNormal(); soundNormal();
} }
` ```
``Note: The `default` case runs when none of the `case` matches. Remember that when a case has no `break` statement, it `falls through` to the next case and will continue to the subsequent `cases` till a `break` is encountered. Because of this, make sure that each case has a `break` statement. The `default` case does not require a `break` statement. ``Note: The `default` case runs when none of the `case` matches. Remember that when a case has no `break` statement, it `falls through` to the next case and will continue to the subsequent `cases` till a `break` is encountered. Because of this, make sure that each case has a `break` statement. The `default` case does not require a `break` statement.
`` ``
@ -74,7 +76,8 @@ localeTitle: تدفق التحكم
تتمثل إحدى الطرق لتمثيل ذلك في: تتمثل إحدى الطرق لتمثيل ذلك في:
`int cash = 150; ```java
int cash = 150;
String company = "friends"; String company = "friends";
if( cash < 25 ){ if( cash < 25 ){
@ -96,7 +99,7 @@ localeTitle: تدفق التحكم
getDecentMeal(); getDecentMeal();
} }
} }
` ```
في هذا المثال ، سيتم تنفيذ `meetFriendsAtSportsBar()` . في هذا المثال ، سيتم تنفيذ `meetFriendsAtSportsBar()` .

View File

@ -199,5 +199,6 @@ localeTitle: أنواع البيانات
انتاج: انتاج:
`10198442 ```
` 10198442
```

View File

@ -25,7 +25,8 @@ localeTitle: تحديد السمات
يمكننا إنشاء كائنات متعددة لفئة مركباتنا ، واستخدام بناء الجملة للنقاط للوصول إلى سماتها وأساليبها. يمكننا إنشاء كائنات متعددة لفئة مركباتنا ، واستخدام بناء الجملة للنقاط للوصول إلى سماتها وأساليبها.
`class MyClass { ```java
class MyClass {
public static void main(String[] args) { public static void main(String[] args) {
Vehicle v1 = new Vehicle(); Vehicle v1 = new Vehicle();
Vehicle v2 = new Vehicle(); Vehicle v2 = new Vehicle();
@ -33,7 +34,7 @@ localeTitle: تحديد السمات
v2.horn(); v2.horn();
} }
} }
` ```
### معدلات الرؤية ### معدلات الرؤية

View File

@ -14,7 +14,8 @@ localeTitle: التحقق من المساواة
بالنسبة لأنواع المتغيرات البدائية ، مثل `int` و `double` ، يمكن دائمًا استخدام عامل `==` للتحقق من المساواة ، حيث يتم تخزين قيمها مباشرة مع المتغير (وليس كمرجع إلى فتحة أخرى في الذاكرة). بالنسبة لأنواع المتغيرات البدائية ، مثل `int` و `double` ، يمكن دائمًا استخدام عامل `==` للتحقق من المساواة ، حيث يتم تخزين قيمها مباشرة مع المتغير (وليس كمرجع إلى فتحة أخرى في الذاكرة).
`int var1 = 1; ```java
int var1 = 1;
int var2 = 1; int var2 = 1;
System.out.println(var1 == var2) // true System.out.println(var1 == var2) // true
@ -25,7 +26,7 @@ localeTitle: التحقق من المساواة
System.out.println(obj1 == obj2) // true System.out.println(obj1 == obj2) // true
System.out.println(obj1 == obj3) // false System.out.println(obj1 == obj3) // false
System.out.println(obj2 == obj3) // false System.out.println(obj2 == obj3) // false
` ```
## طريقة `.equals()` ## طريقة `.equals()`
@ -33,12 +34,13 @@ localeTitle: التحقق من المساواة
تعد فئة "السلسلة" واحدة من الأمثلة الأكثر شيوعًا للفئة التي تتجاوز طريقة "يساوي ()". عند المقارنة بين "سلعة" للمساواة ، تحتاج إلى استخدام طريقة "يساوي ()" ، لأن "==" لن يعمل كما هو متوقع. تعد فئة "السلسلة" واحدة من الأمثلة الأكثر شيوعًا للفئة التي تتجاوز طريقة "يساوي ()". عند المقارنة بين "سلعة" للمساواة ، تحتاج إلى استخدام طريقة "يساوي ()" ، لأن "==" لن يعمل كما هو متوقع.
`String s1 = "Bob"; ```java
String s1 = "Bob";
String s2 = "ob"; String s2 = "ob";
s2 = "B" + s2; //s2 now is also "Bob" s2 = "B" + s2; //s2 now is also "Bob"
System.out.println(s1 == s2); //false System.out.println(s1 == s2); //false
System.out.println(s1.equals(s2)); //true System.out.println(s1.equals(s2)); //true
` ```
عند إنشاء فئة جديدة في Java ، ستحتاج غالبًا إلى تجاوز طريقة `equals()` لتوفير طريقة أكثر فائدة لمقارنة كائنين من نفس الفئة. كيف يتم تنفيذ هذه الطريقة هو ما يصل تماما إلى حكم المطور. عند إنشاء فئة جديدة في Java ، ستحتاج غالبًا إلى تجاوز طريقة `equals()` لتوفير طريقة أكثر فائدة لمقارنة كائنين من نفس الفئة. كيف يتم تنفيذ هذه الطريقة هو ما يصل تماما إلى حكم المطور.

View File

@ -8,13 +8,14 @@ localeTitle: نهائي
**_مثال:_** **_مثال:_**
`class MyClass { ```java
class MyClass {
public static final double PI = 3.14; public static final double PI = 3.14;
public static void main(String[] args){ public static void main(String[] args){
System.out.println(PI); System.out.println(PI);
} }
} }
` ```
PI هو الآن ثابت. أي محاولة لتعيينه قيمة ستسبب خطأ. PI هو الآن ثابت. أي محاولة لتعيينه قيمة ستسبب خطأ.

View File

@ -8,7 +8,8 @@ localeTitle: أخيرا
**_مثال:_** **_مثال:_**
`try { ```java
try {
// Normal execution path // Normal execution path
throw new EmptyStackException(); throw new EmptyStackException();
} catch (ExampleException ee) { } catch (ExampleException ee) {
@ -17,4 +18,4 @@ localeTitle: أخيرا
// This optional section is executed upon termination of any of the try or catch blocks above, // This optional section is executed upon termination of any of the try or catch blocks above,
// except when System.exit() is called in "try" or "catch" blocks; // except when System.exit() is called in "try" or "catch" blocks;
} }
` ```

View File

@ -29,14 +29,15 @@ localeTitle: رسائل ورسائل
بمجرد أن يتم تعريف الستر والأدوات ، نستخدمها في هدفنا الرئيسي: بمجرد أن يتم تعريف الستر والأدوات ، نستخدمها في هدفنا الرئيسي:
`public stativ void main(String[] args) { ```java
public stativ void main(String[] args) {
Vehicle v1 = new Vehicle(); Vehicle v1 = new Vehicle();
v1.setColor("Red"); v1.setColor("Red");
System.out.println(v1.getColor()); System.out.println(v1.getColor());
} }
// Outputs "Red" // Outputs "Red"
` ```
* * * * * *
@ -46,22 +47,25 @@ localeTitle: رسائل ورسائل
باستخدام أداة getter و setter ، يمكن للمبرمج التحكم في كيفية الوصول إلى المتغيرات الهامة وتحديثها ، مثل تغيير قيمة متغير داخل نطاق محدد. خذ بعين الاعتبار التعليمة البرمجية التالية لطريقة setter: باستخدام أداة getter و setter ، يمكن للمبرمج التحكم في كيفية الوصول إلى المتغيرات الهامة وتحديثها ، مثل تغيير قيمة متغير داخل نطاق محدد. خذ بعين الاعتبار التعليمة البرمجية التالية لطريقة setter:
`public void setNumber(int num) { ```java
public void setNumber(int num) {
if (num < 10 || num > 100) { if (num < 10 || num > 100) {
throw new IllegalArgumentException(); throw new IllegalArgumentException();
} }
this.number = num; this.number = num;
} }
` ```
وهذا يضمن تعيين قيمة الرقم دائمًا بين 10 و 100. إذا كان المبرمج يسمح بتحديث رقم المتغير مباشرة ، يمكن للمتصل تعيين أي قيمة عشوائية له: وهذا يضمن تعيين قيمة الرقم دائمًا بين 10 و 100. إذا كان المبرمج يسمح بتحديث رقم المتغير مباشرة ، يمكن للمتصل تعيين أي قيمة عشوائية له:
`obj.number = 3; ```java
` obj.number = 3;
```
هذا ينتهك القيد لقيم تتراوح بين 10 إلى 100 لهذا المتغير. نظرًا لأننا لا نتوقع حدوث ذلك ، فإن إخفاء رقم المتغير كخاصية خاصة واستخدام أداة ضبط يمنعه. من ناحية أخرى ، فإن طريقة الوسيلة هي الطريقة الوحيدة للعالم الخارجي لقراءة قيمة المتغير: هذا ينتهك القيد لقيم تتراوح بين 10 إلى 100 لهذا المتغير. نظرًا لأننا لا نتوقع حدوث ذلك ، فإن إخفاء رقم المتغير كخاصية خاصة واستخدام أداة ضبط يمنعه. من ناحية أخرى ، فإن طريقة الوسيلة هي الطريقة الوحيدة للعالم الخارجي لقراءة قيمة المتغير:
`public int getNumber() { ```java
public int getNumber() {
return this.number; return this.number;
} }
` ```

View File

@ -8,7 +8,8 @@ localeTitle: أساسيات الوراثة
الحل: **الميراث** . توفر Java طريقة مرتبة لخصائص الأصل "الوراثة": الحل: **الميراث** . توفر Java طريقة مرتبة لخصائص الأصل "الوراثة":
`public class Car { ```java
public class Car {
private String name; private String name;
private String manufacturerName; private String manufacturerName;
@ -43,7 +44,7 @@ localeTitle: أساسيات الوراثة
System.out.println(modelS.getManufacturerName()); System.out.println(modelS.getManufacturerName());
// prints Charging ... // prints Charging ...
modelS.charge(); modelS.charge();
` ```
![:rocket:](//forum.freecodecamp.com/images/emoji/emoji_one/rocket.png?v=2 ":صاروخ:") [تشغيل الكود](https://repl.it/CJZY/0) ![:rocket:](//forum.freecodecamp.com/images/emoji/emoji_one/rocket.png?v=2 ":صاروخ:") [تشغيل الكود](https://repl.it/CJZY/0)

View File

@ -13,7 +13,8 @@ localeTitle: ميراث
دعونا وصف ذلك مع المثال الكلاسيكي لل `Vehicle` الفئة و `Car` الفئة: دعونا وصف ذلك مع المثال الكلاسيكي لل `Vehicle` الفئة و `Car` الفئة:
`public class Vehicle { ```java
public class Vehicle {
public void start() { public void start() {
// starting the engine // starting the engine
} }
@ -30,16 +31,17 @@ localeTitle: ميراث
return numberOfSeats; return numberOfSeats;
} }
} }
` ```
هنا ، يمكننا رؤية فئة `Car` ترث خصائص فئة `Vehicle` . لذلك ، ليس علينا كتابة نفس الكود `start()` الطريقتين `start()` و `stop()` `Car` كذلك ، حيث أن هذه الخصائص متاحة من الشركة الأم أو الطبقة الفائقة. لذلك ، فإن الكائنات التي تم إنشاؤها من فئة `Car` سيكون لها هذه الخصائص _أيضًا_ ! هنا ، يمكننا رؤية فئة `Car` ترث خصائص فئة `Vehicle` . لذلك ، ليس علينا كتابة نفس الكود `start()` الطريقتين `start()` و `stop()` `Car` كذلك ، حيث أن هذه الخصائص متاحة من الشركة الأم أو الطبقة الفائقة. لذلك ، فإن الكائنات التي تم إنشاؤها من فئة `Car` سيكون لها هذه الخصائص _أيضًا_ !
`Car tesla = new Car(); ```java
Car tesla = new Car();
tesla.start(); tesla.start();
tesla.stop(); tesla.stop();
` ```
![:rocket:](//forum.freecodecamp.com/images/emoji/emoji_one/rocket.png?v=2 ":صاروخ:") [تشغيل الكود](https://repl.it/CJXz/0) ![:rocket:](//forum.freecodecamp.com/images/emoji/emoji_one/rocket.png?v=2 ":صاروخ:") [تشغيل الكود](https://repl.it/CJXz/0)
@ -62,26 +64,29 @@ localeTitle: ميراث
في Java ، من الممكن الإشارة إلى فئة فرعية _كمثال_ لفئة الطبقة المميزة الخاصة بها. يطلق عليه _تعدد الأشكال_ في البرمجة الشيئية (OOP) ، والقدرة على كائن تأخذ على أشكال كثيرة. على سبيل المثال، `Car` كائن الفئة يمكن الرجوع إليها على أنها `Vehicle` مثيل فئة مثل هذا: في Java ، من الممكن الإشارة إلى فئة فرعية _كمثال_ لفئة الطبقة المميزة الخاصة بها. يطلق عليه _تعدد الأشكال_ في البرمجة الشيئية (OOP) ، والقدرة على كائن تأخذ على أشكال كثيرة. على سبيل المثال، `Car` كائن الفئة يمكن الرجوع إليها على أنها `Vehicle` مثيل فئة مثل هذا:
`Vehicle car = new Car(); ```java
` Vehicle car = new Car();
```
على الرغم من أن العكس غير ممكن: على الرغم من أن العكس غير ممكن:
`Car car = new Vehicle(); // ERROR ```java
` Car car = new Vehicle(); // ERROR
```
![:rocket:](//forum.freecodecamp.com/images/emoji/emoji_one/rocket.png?v=2 ":صاروخ:") [تشغيل الكود](https://repl.it/CJYB/0) ![:rocket:](//forum.freecodecamp.com/images/emoji/emoji_one/rocket.png?v=2 ":صاروخ:") [تشغيل الكود](https://repl.it/CJYB/0)
نظرًا لأنه يمكنك الرجوع إلى فئة فرعية من Java كمثيل فائق ، يمكنك بسهولة عرض مثيل لكائن فئة فرعية إلى مثيل superclass. من الممكن إرسال كائن superclass إلى نوع فئة فرعية ، ولكن _فقط إذا كان الكائن بالفعل مثيلًا للفئة الفرعية_ . لذا ضع ذلك في اعتبارك: نظرًا لأنه يمكنك الرجوع إلى فئة فرعية من Java كمثيل فائق ، يمكنك بسهولة عرض مثيل لكائن فئة فرعية إلى مثيل superclass. من الممكن إرسال كائن superclass إلى نوع فئة فرعية ، ولكن _فقط إذا كان الكائن بالفعل مثيلًا للفئة الفرعية_ . لذا ضع ذلك في اعتبارك:
`Car car = new Car(); ```java
Car car = new Car();
Vehicle vehicle = car; // upcasting Vehicle vehicle = car; // upcasting
Car car2 = (Car)vechile; //downcasting Car car2 = (Car)vechile; //downcasting
Bike bike = new Bike(); // say Bike is also a subclass of Vehicle Bike bike = new Bike(); // say Bike is also a subclass of Vehicle
Vehicle v = bike; // upcasting, no problem here. Vehicle v = bike; // upcasting, no problem here.
Car car3 = (Car)bike; // Compilation Error : as bike is NOT a instance of Car Car car3 = (Car)bike; // Compilation Error : as bike is NOT a instance of Car
` ```
![:rocket:](//forum.freecodecamp.com/images/emoji/emoji_one/rocket.png?v=2 ":صاروخ:") [تشغيل الكود](https://repl.it/CJYM/0) ![:rocket:](//forum.freecodecamp.com/images/emoji/emoji_one/rocket.png?v=2 ":صاروخ:") [تشغيل الكود](https://repl.it/CJYM/0)
@ -91,7 +96,8 @@ localeTitle: ميراث
تسمح لك Java _بإلغاء_ أو إعادة تعريف الطرق المحددة في الطبقة الفائقة. على سبيل المثال ، يكون لفئة `Car` الخاصة بك تطبيق مختلف `start()` من `Vehicle` ، لذلك يمكنك القيام بذلك: تسمح لك Java _بإلغاء_ أو إعادة تعريف الطرق المحددة في الطبقة الفائقة. على سبيل المثال ، يكون لفئة `Car` الخاصة بك تطبيق مختلف `start()` من `Vehicle` ، لذلك يمكنك القيام بذلك:
`public class Vehicle { ```java
public class Vehicle {
public void start() { public void start() {
System.out.println("Vehicle start code"); System.out.println("Vehicle start code");
} }
@ -105,7 +111,7 @@ localeTitle: ميراث
Car car = new Car(); Car car = new Car();
car.start(); // "Car start code" car.start(); // "Car start code"
` ```
![:rocket:](//forum.freecodecamp.com/images/emoji/emoji_one/rocket.png?v=2 ":صاروخ:") [تشغيل الكود](https://repl.it/CJYZ/1) ![:rocket:](//forum.freecodecamp.com/images/emoji/emoji_one/rocket.png?v=2 ":صاروخ:") [تشغيل الكود](https://repl.it/CJYZ/1)
@ -122,7 +128,8 @@ localeTitle: ميراث
مضحك تسأل عن ذلك! ما عليك سوى استخدام الكلمة الرئيسية `super` : مضحك تسأل عن ذلك! ما عليك سوى استخدام الكلمة الرئيسية `super` :
`public class Vehicle() { ```java
public class Vehicle() {
public void start() { public void start() {
System.out.println("Vehicle start code"); System.out.println("Vehicle start code");
} }
@ -136,7 +143,7 @@ localeTitle: ميراث
Car car = new Car(); Car car = new Car();
car.run(); // "Vehicle start code" car.run(); // "Vehicle start code"
` ```
![:rocket:](//forum.freecodecamp.com/images/emoji/emoji_one/rocket.png?v=2 ":صاروخ:") [تشغيل الكود](https://repl.it/CJY4/0) ![:rocket:](//forum.freecodecamp.com/images/emoji/emoji_one/rocket.png?v=2 ":صاروخ:") [تشغيل الكود](https://repl.it/CJY4/0)
@ -146,16 +153,18 @@ localeTitle: ميراث
باستخدام `instanceof` الكلمة. بوجود الكثير من الطبقات والفئات الفرعية ، سيكون من المربك قليلاً معرفة أي فئة هي فئة فرعية واحدة في وقت التشغيل. لذا ، يمكننا استخدام `instanceof` لتحديد ما إذا كان الكائن عبارة عن مثيل لفئة أو مثيل لفئة فرعية أو مثيل لواجهة. باستخدام `instanceof` الكلمة. بوجود الكثير من الطبقات والفئات الفرعية ، سيكون من المربك قليلاً معرفة أي فئة هي فئة فرعية واحدة في وقت التشغيل. لذا ، يمكننا استخدام `instanceof` لتحديد ما إذا كان الكائن عبارة عن مثيل لفئة أو مثيل لفئة فرعية أو مثيل لواجهة.
`Car car = new Car(); ```java
Car car = new Car();
boolean flag = car instanceof Vehicle; // true in this case! boolean flag = car instanceof Vehicle; // true in this case!
` ```
## المقاولون والميراث ## المقاولون والميراث
كما ذكرنا سابقًا ، لا يمكن تكوين المنشئات بشكل مباشر عن طريق فئة فرعية. على الرغم من أن فئة فرعية _مطلوبة_ لاستدعاء constructor الأصل الخاص به [كأول عملية](http://stackoverflow.com/questions/1168345/why-does-this-and-super-have-to-be-the-first-statement-in-a-constructor) في مُنشئه الخاص. ماذا؟ كنت تفكر في ذلك ، وذلك باستخدام `super` : كما ذكرنا سابقًا ، لا يمكن تكوين المنشئات بشكل مباشر عن طريق فئة فرعية. على الرغم من أن فئة فرعية _مطلوبة_ لاستدعاء constructor الأصل الخاص به [كأول عملية](http://stackoverflow.com/questions/1168345/why-does-this-and-super-have-to-be-the-first-statement-in-a-constructor) في مُنشئه الخاص. ماذا؟ كنت تفكر في ذلك ، وذلك باستخدام `super` :
`public class Vehicle { ```java
public class Vehicle {
public Vehicle() { public Vehicle() {
// constructor // constructor
} }
@ -172,7 +181,7 @@ localeTitle: ميراث
super.start(); super.start();
} }
} }
` ```
![:rocket:](//forum.freecodecamp.com/images/emoji/emoji_one/rocket.png?v=2 ":صاروخ:") [تشغيل الكود](https://repl.it/CJY8/0) ![:rocket:](//forum.freecodecamp.com/images/emoji/emoji_one/rocket.png?v=2 ":صاروخ:") [تشغيل الكود](https://repl.it/CJY8/0)

View File

@ -6,7 +6,8 @@ localeTitle: واجهات
واجهة في جافا قليلا مثل فئة، ولكن مع فارق كبير: و `interface` يمكن أن يكون _فقط_ تواقيع طريقة والحقول والطرق الافتراضية. منذ Java 8 ، يمكنك أيضًا إنشاء [طرق افتراضية](https://docs.oracle.com/javase/tutorial/java/IandI/defaultmethods.html) . في الجزء التالي ، يمكنك مشاهدة مثال على الواجهة: واجهة في جافا قليلا مثل فئة، ولكن مع فارق كبير: و `interface` يمكن أن يكون _فقط_ تواقيع طريقة والحقول والطرق الافتراضية. منذ Java 8 ، يمكنك أيضًا إنشاء [طرق افتراضية](https://docs.oracle.com/javase/tutorial/java/IandI/defaultmethods.html) . في الجزء التالي ، يمكنك مشاهدة مثال على الواجهة:
`public interface Vehicle { ```java
public interface Vehicle {
public String licensePlate = ""; public String licensePlate = "";
public float maxVel public float maxVel
public void start(); public void start();
@ -15,11 +16,12 @@ localeTitle: واجهات
System.out.println("Blowing horn"); System.out.println("Blowing horn");
} }
} }
` ```
تحتوي الواجهة أعلاه على حقلين وطريقتين وطريقة افتراضية. وحدها ، ليست ذات فائدة كبيرة ، ولكنها تستخدم عادة مع الفصول. ماذا؟ بسيطة ، عليك أن تتأكد من أن بعض الصف يقوم `implements` . تحتوي الواجهة أعلاه على حقلين وطريقتين وطريقة افتراضية. وحدها ، ليست ذات فائدة كبيرة ، ولكنها تستخدم عادة مع الفصول. ماذا؟ بسيطة ، عليك أن تتأكد من أن بعض الصف يقوم `implements` .
`public class Car implements Vehicle { ```java
public class Car implements Vehicle {
public void start() { public void start() {
System.out.println("starting engine..."); System.out.println("starting engine...");
} }
@ -27,7 +29,7 @@ localeTitle: واجهات
System.out.println("stopping engine..."); System.out.println("stopping engine...");
} }
} }
` ```
![:rocket:](//forum.freecodecamp.com/images/emoji/emoji_one/rocket.png?v=2 ":صاروخ:") [تشغيل الكود](https://repl.it/CItd/0) ![:rocket:](//forum.freecodecamp.com/images/emoji/emoji_one/rocket.png?v=2 ":صاروخ:") [تشغيل الكود](https://repl.it/CItd/0)
@ -37,18 +39,20 @@ localeTitle: واجهات
بمجرد إنشاء فئة Java تقوم `implements` أي واجهة ، يمكن الإشارة إلى مثيل الكائن كمثيل للواجهة. هذا المفهوم مشابه لمبدأ إنشاء الوراثة. بمجرد إنشاء فئة Java تقوم `implements` أي واجهة ، يمكن الإشارة إلى مثيل الكائن كمثيل للواجهة. هذا المفهوم مشابه لمبدأ إنشاء الوراثة.
`// following our previous example ```java
// following our previous example
Vehicle tesla = new Car(); Vehicle tesla = new Car();
tesla.start(); // starting engine ... tesla.start(); // starting engine ...
` ```
**لا يمكن أن** تحتوي واجهة على أساليب منشئ ، لذلك **لا يمكنك** إنشاء مثيل لواجهة بنفسها. يجب إنشاء مثيل لفئة معينة تقوم بتطبيق واجهة للرجوع إليها. فكر في الواجهات على أنها نموذج عقد فارغ ، أو نموذج. **لا يمكن أن** تحتوي واجهة على أساليب منشئ ، لذلك **لا يمكنك** إنشاء مثيل لواجهة بنفسها. يجب إنشاء مثيل لفئة معينة تقوم بتطبيق واجهة للرجوع إليها. فكر في الواجهات على أنها نموذج عقد فارغ ، أو نموذج.
ما الذي يمكنك القيام به مع هذه الميزة؟ تعدد الأشكال! يمكنك استخدام الواجهات فقط للإشارة إلى مثيلات الكائن! ما الذي يمكنك القيام به مع هذه الميزة؟ تعدد الأشكال! يمكنك استخدام الواجهات فقط للإشارة إلى مثيلات الكائن!
`class Truck implements Vehicle { ```java
class Truck implements Vehicle {
public void start() { public void start() {
System.out.println("starting truck engine..."); System.out.println("starting truck engine...");
} }
@ -69,7 +73,7 @@ localeTitle: واجهات
Starter.startEngine(tesla); // starting engine ... Starter.startEngine(tesla); // starting engine ...
Starter.startEngine(tata); // starting truck engine ... Starter.startEngine(tata); // starting truck engine ...
` ```
![:rocket:](//forum.freecodecamp.com/images/emoji/emoji_one/rocket.png?v=2 ":صاروخ:") [تشغيل الكود](https://repl.it/CItm/0) ![:rocket:](//forum.freecodecamp.com/images/emoji/emoji_one/rocket.png?v=2 ":صاروخ:") [تشغيل الكود](https://repl.it/CItm/0)
@ -77,7 +81,8 @@ localeTitle: واجهات
نعم ، يمكنك تنفيذ واجهات متعددة في فصل واحد. أثناء [تواجدك](//forum.freecodecamp.com/t/java-docs-inheritance) في [التوارث](//forum.freecodecamp.com/t/java-docs-inheritance) داخل الصفوف ، تم تقييدك في فئة واحدة فقط ، يمكنك هنا توسيع أي عدد من الواجهات. ولكن لا ننسى تنفيذ _جميع_ أساليب جميع واجهات ، وإلا سوف تفشل التجميع! نعم ، يمكنك تنفيذ واجهات متعددة في فصل واحد. أثناء [تواجدك](//forum.freecodecamp.com/t/java-docs-inheritance) في [التوارث](//forum.freecodecamp.com/t/java-docs-inheritance) داخل الصفوف ، تم تقييدك في فئة واحدة فقط ، يمكنك هنا توسيع أي عدد من الواجهات. ولكن لا ننسى تنفيذ _جميع_ أساليب جميع واجهات ، وإلا سوف تفشل التجميع!
`public interface GPS { ```java
public interface GPS {
public void getCoordinates(); public void getCoordinates();
} }
@ -97,7 +102,7 @@ localeTitle: واجهات
// stop Radio // stop Radio
} }
} }
` ```
![:rocket:](//forum.freecodecamp.com/images/emoji/emoji_one/rocket.png?v=2 ":صاروخ:") [تشغيل الكود](https://repl.it/CIto/0) ![:rocket:](//forum.freecodecamp.com/images/emoji/emoji_one/rocket.png?v=2 ":صاروخ:") [تشغيل الكود](https://repl.it/CIto/0)
@ -116,7 +121,8 @@ localeTitle: واجهات
لحسن الحظ ، توفر لك Java 8 الآن الطرق `default` للواجهات. _يمكن أن_ تحتوي الطريقة `default` على التنفيذ الخاص بها _مباشرة_ داخل الواجهة! لذا ، إذا لم يقم تطبيق Class بتنفيذ طريقة افتراضية ، فسيأخذ المترجم التنفيذ المذكور داخل الواجهة. جميل أليس كذلك؟ لذلك في مكتبتك ، يمكنك إضافة أي عدد من الطرق الافتراضية في واجهات دون الخوف من كسر أي شيء! لحسن الحظ ، توفر لك Java 8 الآن الطرق `default` للواجهات. _يمكن أن_ تحتوي الطريقة `default` على التنفيذ الخاص بها _مباشرة_ داخل الواجهة! لذا ، إذا لم يقم تطبيق Class بتنفيذ طريقة افتراضية ، فسيأخذ المترجم التنفيذ المذكور داخل الواجهة. جميل أليس كذلك؟ لذلك في مكتبتك ، يمكنك إضافة أي عدد من الطرق الافتراضية في واجهات دون الخوف من كسر أي شيء!
`public interface GPS { ```java
public interface GPS {
public void getCoordinates(); public void getCoordinates();
default public void getRoughCoordinates() { default public void getRoughCoordinates() {
// implementation to return coordinates from rough sources // implementation to return coordinates from rough sources
@ -146,7 +152,7 @@ localeTitle: واجهات
Smartphone motoG = new Smartphone(); Smartphone motoG = new Smartphone();
motog.getRoughCoordinates(); // Fetching rough coordinates... motog.getRoughCoordinates(); // Fetching rough coordinates...
` ```
![:rocket:](//forum.freecodecamp.com/images/emoji/emoji_one/rocket.png?v=2 ":صاروخ:") [تشغيل الكود](https://repl.it/CItp/0) ![:rocket:](//forum.freecodecamp.com/images/emoji/emoji_one/rocket.png?v=2 ":صاروخ:") [تشغيل الكود](https://repl.it/CItp/0)
@ -154,7 +160,8 @@ localeTitle: واجهات
سؤال رائع. في هذه الحالة ، إذا لم تقدم التطبيق في الصف ، فسوف يتم خلط المترجم الضعيف ويفشل ببساطة! يجب عليك توفير تنفيذ طريقة افتراضية داخل الفئة أيضًا. هناك أيضًا طريقة رائعة تستخدم ميزة `super` للاتصال بأي تطبيق تريده: سؤال رائع. في هذه الحالة ، إذا لم تقدم التطبيق في الصف ، فسوف يتم خلط المترجم الضعيف ويفشل ببساطة! يجب عليك توفير تنفيذ طريقة افتراضية داخل الفئة أيضًا. هناك أيضًا طريقة رائعة تستخدم ميزة `super` للاتصال بأي تطبيق تريده:
`public interface Radio { ```java
public interface Radio {
// public void startRadio(); // public void startRadio();
// public void stopRadio(); // public void stopRadio();
@ -182,7 +189,7 @@ localeTitle: واجهات
Smartphone motoG = new Smartphone(); Smartphone motoG = new Smartphone();
motoG.next(); // Next from MusicPlayer motoG.next(); // Next from MusicPlayer
` ```
![:rocket:](//forum.freecodecamp.com/images/emoji/emoji_one/rocket.png?v=2 ":صاروخ:") [تشغيل الكود](https://repl.it/CIts/0) ![:rocket:](//forum.freecodecamp.com/images/emoji/emoji_one/rocket.png?v=2 ":صاروخ:") [تشغيل الكود](https://repl.it/CIts/0)
@ -220,7 +227,8 @@ localeTitle: واجهات
من الممكن أيضًا في Java لواجهة _ترث_ واجهة أخرى ، باستخدام ، تفكر في ذلك ، `extends` الكلمة الرئيسية: من الممكن أيضًا في Java لواجهة _ترث_ واجهة أخرى ، باستخدام ، تفكر في ذلك ، `extends` الكلمة الرئيسية:
`public interface Player { ```java
public interface Player {
public void start(); public void start();
public void pause(); public void pause();
public void stop(); public void stop();
@ -231,11 +239,12 @@ localeTitle: واجهات
System.out.println("Next from MusicPlayer"); System.out.println("Next from MusicPlayer");
} }
} }
` ```
هذا يعني ، أن تطبيق Class `MusicPlayer` Interface (واجهة `MusicPlayer` يجب أن يقوم بتنفيذ _جميع_ أساليب `MusicPlayer` بالإضافة إلى `Player` : هذا يعني ، أن تطبيق Class `MusicPlayer` Interface (واجهة `MusicPlayer` يجب أن يقوم بتنفيذ _جميع_ أساليب `MusicPlayer` بالإضافة إلى `Player` :
`public class SmartPhone implements MusicPlayer { ```java
public class SmartPhone implements MusicPlayer {
public void start() { public void start() {
System.out.println("start"); System.out.println("start");
} }
@ -246,7 +255,7 @@ localeTitle: واجهات
System.out.println("pause"); System.out.println("pause");
} }
} }
` ```
![:rocket:](//forum.freecodecamp.com/images/emoji/emoji_one/rocket.png?v=2 ":صاروخ:") [تشغيل الكود](https://repl.it/CIty/0) ![:rocket:](//forum.freecodecamp.com/images/emoji/emoji_one/rocket.png?v=2 ":صاروخ:") [تشغيل الكود](https://repl.it/CIty/0)

View File

@ -22,10 +22,11 @@ FXML هي لغة ترميز مبنية على XML تستخدم لتعريف ال
#### مثال: #### مثال:
`<HBox spacing="10" alignment="bottom_right" > // Creates an HBox Object ```XML
<HBox spacing="10" alignment="bottom_right" > // Creates an HBox Object
<Button text="Sign In"/> // Nested inside the HBox is a Button object with the text 'Sign In' <Button text="Sign In"/> // Nested inside the HBox is a Button object with the text 'Sign In'
</HBox> </HBox>
` ```
### المراجع: ### المراجع:

View File

@ -40,7 +40,8 @@ localeTitle: بيان التحكم في الاستراحة
قد تكون عبارات `break` مفيدة بشكل خاص أثناء البحث عن عنصر في صفيف. يؤدي استخدام `break` في التعليمة البرمجية التالية إلى تحسين الكفاءة أثناء توقف الحلقة بمجرد العثور على العنصر الذي نبحث عنه ( `searchFor` ) ، بدلاً من الاستمرار حتى يتم الوصول إلى نهاية `arrayInts` . قد تكون عبارات `break` مفيدة بشكل خاص أثناء البحث عن عنصر في صفيف. يؤدي استخدام `break` في التعليمة البرمجية التالية إلى تحسين الكفاءة أثناء توقف الحلقة بمجرد العثور على العنصر الذي نبحث عنه ( `searchFor` ) ، بدلاً من الاستمرار حتى يتم الوصول إلى نهاية `arrayInts` .
`int j = 0; ```java
int j = 0;
int[] arrayOfInts = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9}; int[] arrayOfInts = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9};
int searchFor = 5; int searchFor = 5;
@ -54,7 +55,7 @@ localeTitle: بيان التحكم في الاستراحة
} }
System.out.println("j = " + j); System.out.println("j = " + j);
` ```
يمكن استخدام بيان الاستراحة أيضًا ضمن عبارة "بيان". يمكن استخدام بيان الاستراحة أيضًا ضمن عبارة "بيان".

View File

@ -6,7 +6,8 @@ localeTitle: متابعة بيان التحكم
يؤدي العبارة `continue` إلى تخطي حلقة ما بعد السطور التالية بعد المتابعة والانتقال إلى بداية التكرار التالي. في `for` حلقة، يقفز التحكم إلى بيان التحديث، وفي `while` أو `do while` حلقة، يقفز التحكم إلى التعبير المنطقية / حالة. يؤدي العبارة `continue` إلى تخطي حلقة ما بعد السطور التالية بعد المتابعة والانتقال إلى بداية التكرار التالي. في `for` حلقة، يقفز التحكم إلى بيان التحديث، وفي `while` أو `do while` حلقة، يقفز التحكم إلى التعبير المنطقية / حالة.
`for (int j = 0; j < 10; j++) ```java
for (int j = 0; j < 10; j++)
{ {
if (j == 5) if (j == 5)
{ {
@ -14,7 +15,7 @@ localeTitle: متابعة بيان التحكم
} }
System.out.print (j + " "); System.out.print (j + " ");
} }
` ```
ستتم طباعة قيمة `j` لكل تكرار ، ما عدا عندما تساوي `5` . سوف تحصل على تخطي العبارة الطباعة بسبب `continue` وسوف يكون الإخراج: ستتم طباعة قيمة `j` لكل تكرار ، ما عدا عندما تساوي `5` . سوف تحصل على تخطي العبارة الطباعة بسبب `continue` وسوف يكون الإخراج:
@ -23,7 +24,8 @@ localeTitle: متابعة بيان التحكم
لنفترض أنك تريد حساب عدد `i` s في كلمة `mississippi` . هنا يمكنك استخدام حلقة مع عبارة `continue` ، كما يلي: لنفترض أنك تريد حساب عدد `i` s في كلمة `mississippi` . هنا يمكنك استخدام حلقة مع عبارة `continue` ، كما يلي:
`String searchWord = "mississippi"; ```java
String searchWord = "mississippi";
// max stores the length of the string // max stores the length of the string
int max = searchWord.length(); int max = searchWord.length();
@ -42,7 +44,7 @@ localeTitle: متابعة بيان التحكم
} }
System.out.println("numPs = " + numPs); System.out.println("numPs = " + numPs);
` ```
![:rocket:](//forum.freecodecamp.com/images/emoji/emoji_one/rocket.png?v=2 ":صاروخ:") [تشغيل الكود](https://repl.it/CJZH/0) ![:rocket:](//forum.freecodecamp.com/images/emoji/emoji_one/rocket.png?v=2 ":صاروخ:") [تشغيل الكود](https://repl.it/CJZH/0)

View File

@ -13,7 +13,8 @@ localeTitle: بيانات القفز
تقسيم بيان التحكم "فاصل" خارج الحلقة عندما يتم استيفاء الشرط. هذا يعني أن بقية الحلقة لن تعمل. على سبيل المثال ، في الحلقة أدناه إذا وصلت إلى 5 ، فواصل الحلقة ، بحيث لا تستمر. تقسيم بيان التحكم "فاصل" خارج الحلقة عندما يتم استيفاء الشرط. هذا يعني أن بقية الحلقة لن تعمل. على سبيل المثال ، في الحلقة أدناه إذا وصلت إلى 5 ، فواصل الحلقة ، بحيث لا تستمر.
`for(int i=0;i<10;i++){ ```java
for(int i=0;i<10;i++){
if(i == 5){ //if i is 5, break out of the loop. if(i == 5){ //if i is 5, break out of the loop.
break; break;
@ -21,7 +22,7 @@ localeTitle: بيانات القفز
System.out.println(i); System.out.println(i);
} }
` ```
انتاج: انتاج:
@ -30,7 +31,8 @@ localeTitle: بيانات القفز
إن بيان التحكم 'continue' هو الإصدار الأقل كثافة من 'break'. إنه يخرج فقط من المثيل الحالي للحلقة ويستمر. في الحلقة أدناه ، إذا كان i هو 5 ، تستمر الحلقة ، لذا سوف تتخطى بيان الطباعة أدناه وتتحرك حتى تصل إلى 10 وتوقف الحلقة. إن بيان التحكم 'continue' هو الإصدار الأقل كثافة من 'break'. إنه يخرج فقط من المثيل الحالي للحلقة ويستمر. في الحلقة أدناه ، إذا كان i هو 5 ، تستمر الحلقة ، لذا سوف تتخطى بيان الطباعة أدناه وتتحرك حتى تصل إلى 10 وتوقف الحلقة.
`for(int i=0;i<10;i++){ ```java
for(int i=0;i<10;i++){
if(i == 5){ //if i is 5, break out of the current instance loop. if(i == 5){ //if i is 5, break out of the current instance loop.
continue; continue;
@ -38,7 +40,7 @@ localeTitle: بيانات القفز
System.out.println(i); System.out.println(i);
} }
` ```
انتاج: انتاج:

View File

@ -6,16 +6,18 @@ localeTitle: هل ... في حين حلقة
يتشابه `do while` the `while` loop ، لكن مجموعة البيانات يتم ضمان تشغيلها مرة واحدة على الأقل قبل التحقق من شرط معين. من المهم ملاحظة أن حلقة "حين" هي حلقة تحكم خروج. بينما (لن يتم تنفيذه بالضرورة) ، 'do while' عبارة عن حلقة يتم التحكم في دخولها (سيتم تنفيذها مرة واحدة على الأقل ، حتى إذا كان الشرط غير صحيح). يتشابه `do while` the `while` loop ، لكن مجموعة البيانات يتم ضمان تشغيلها مرة واحدة على الأقل قبل التحقق من شرط معين. من المهم ملاحظة أن حلقة "حين" هي حلقة تحكم خروج. بينما (لن يتم تنفيذه بالضرورة) ، 'do while' عبارة عن حلقة يتم التحكم في دخولها (سيتم تنفيذها مرة واحدة على الأقل ، حتى إذا كان الشرط غير صحيح).
`do ```java
do
{ {
// Statements // Statements
} }
while (condition); while (condition);
` ```
## مثال ## مثال
`int iter_DoWhile = 20; ```java
int iter_DoWhile = 20;
do do
{ {
System.out.print (iter_DoWhile + " "); System.out.print (iter_DoWhile + " ");
@ -25,7 +27,7 @@ localeTitle: هل ... في حين حلقة
} }
while (iter_DoWhile < 10); while (iter_DoWhile < 10);
System.out.println("iter_DoWhile Value: " + iter_DoWhile); System.out.println("iter_DoWhile Value: " + iter_DoWhile);
` ```
انتاج: انتاج:
@ -41,11 +43,12 @@ localeTitle: هل ... في حين حلقة
هل يمكنك تخمين ناتج مقتطف الشفرة التالي؟ هل يمكنك تخمين ناتج مقتطف الشفرة التالي؟
`int i = 10; ```java
int i = 10;
do do
{ {
System.out.println("The value of i is " + i); System.out.println("The value of i is " + i);
i--; i--;
} }
while (i >= 10); while (i >= 10);
` ```

View File

@ -6,22 +6,24 @@ localeTitle: لكل حلقة
كما دعا إلى تعزيز `for` حلقة، فإنه هو وسيلة مفيدة للغاية وبسيطة لتكرار عبر كل عنصر في مجموعة، مجموعة أو أي كائن التي تطبق `Iterable` اجهة. كما دعا إلى تعزيز `for` حلقة، فإنه هو وسيلة مفيدة للغاية وبسيطة لتكرار عبر كل عنصر في مجموعة، مجموعة أو أي كائن التي تطبق `Iterable` اجهة.
`for (object : iterable) ```java
for (object : iterable)
{ {
// Statements // Statements
} }
` ```
تتم قراءة الحلقة كـ "لكل عنصر في `iterable` (يمكن أن يكون صفيفًا أو قابل للتحصيل وما إلى ذلك)". يجب أن يتطابق نوع `object` مع نوع عنصر `iterable` . تتم قراءة الحلقة كـ "لكل عنصر في `iterable` (يمكن أن يكون صفيفًا أو قابل للتحصيل وما إلى ذلك)". يجب أن يتطابق نوع `object` مع نوع عنصر `iterable` .
`int[] number_list = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9}; ```java
int[] number_list = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9};
for (int numbers : number_list) for (int numbers : number_list)
{ {
System.out.print(numbers + " "); System.out.print(numbers + " ");
// Iterated 10 times, numbers 0,1,2...9 // Iterated 10 times, numbers 0,1,2...9
} }
` ```
انتاج: انتاج:
@ -32,7 +34,8 @@ localeTitle: لكل حلقة
وبمقارنة هذا مع التقليدية `for` حلقات: وبمقارنة هذا مع التقليدية `for` حلقات:
`int[] number_list = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9}; ```java
int[] number_list = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9};
for(int i=0;i < number_list.length;i++) for(int i=0;i < number_list.length;i++)
{ {
@ -40,7 +43,7 @@ localeTitle: لكل حلقة
// Iterated 10 times, numbers 0,1,2...9 // Iterated 10 times, numbers 0,1,2...9
} }
` ```
انتاج: انتاج:

View File

@ -23,33 +23,37 @@ localeTitle: لحلقة
لاحظ أنك ستتحقق مما إذا كانت القيمة أقل من 10 ، وليس أقل من أو تساوي 10 ، حيث أنك تبدأ العدّاد الخاص بك عند 0. لاحظ أنك ستتحقق مما إذا كانت القيمة أقل من 10 ، وليس أقل من أو تساوي 10 ، حيث أنك تبدأ العدّاد الخاص بك عند 0.
`for (int iter_For = 0; iter_For < 10; iter_For++) ```java
for (int iter_For = 0; iter_For < 10; iter_For++)
{ {
System.out.print(iter_For + " "); System.out.print(iter_For + " ");
// Iterated 10 times, iter_For 0,1,2...9 // Iterated 10 times, iter_For 0,1,2...9
} }
System.out.println("iter_For Value: " + iter_For); System.out.println("iter_For Value: " + iter_For);
` ```
ملاحظة: من المقبول أيضًا الإعلان عن متغير داخل الحلقة for for single ككلمة. ملاحظة: من المقبول أيضًا الإعلان عن متغير داخل الحلقة for for single ككلمة.
`for (int iter_For = 0; iter_For < 10; iter_For++) ```java
for (int iter_For = 0; iter_For < 10; iter_For++)
{ {
System.out.print (iter_For + " "); System.out.print (iter_For + " ");
// Iterated 10 times, iter_For 0,1,2...9 // Iterated 10 times, iter_For 0,1,2...9
} }
` ```
انتاج: انتاج:
`0 1 2 3 4 5 6 7 8 9 ```
0 1 2 3 4 5 6 7 8 9
iter_For Value: 10 iter_For Value: 10
` ```
مثال آخر للحلقة التي تضيف أول 50 رقم سيكون مثل هذا. i ++ تعني i = i + 1. مثال آخر للحلقة التي تضيف أول 50 رقم سيكون مثل هذا. i ++ تعني i = i + 1.
`int addUntil = 50; ```java
int addUntil = 50;
int sum 0; int sum 0;
for (int i = 1; i <= addUntil; i++) for (int i = 1; i <= addUntil; i++)
@ -58,7 +62,7 @@ localeTitle: لحلقة
} }
System.out.println("The sum of the first 50 numbers is: " + 50); System.out.println("The sum of the first 50 numbers is: " + 50);
` ```
![:rocket:](https://forum.freecodecamp.org/images/emoji/emoji_one/rocket.png?v=2 ":صاروخ:") [تشغيل الكود](https://repl.it/CJYr/0) ![:rocket:](https://forum.freecodecamp.org/images/emoji/emoji_one/rocket.png?v=2 ":صاروخ:") [تشغيل الكود](https://repl.it/CJYr/0)

View File

@ -10,7 +10,8 @@ localeTitle: حلقات لا نهائية
أمثلة: أمثلة:
`// Infinite For Loop ```java
// Infinite For Loop
for ( ; ; ) for ( ; ; )
{ {
// some code here // some code here
@ -27,18 +28,19 @@ localeTitle: حلقات لا نهائية
{ {
// some code here // some code here
} while (true); } while (true);
` ```
عادةً ، إذا كان يتم تشغيل الحلقة الخاصة بك بشكل لا نهائي ، فهذا خطأ لا ينبغي أن يحدث لأن حلقة لا نهائية لا تتوقف وتمنع بقية البرنامج من التشغيل. عادةً ، إذا كان يتم تشغيل الحلقة الخاصة بك بشكل لا نهائي ، فهذا خطأ لا ينبغي أن يحدث لأن حلقة لا نهائية لا تتوقف وتمنع بقية البرنامج من التشغيل.
`for(int i=0;i<100;i++){ ```java
for(int i=0;i<100;i++){
if(i==49){ if(i==49){
i=0; i=0;
} }
} }
` ```
يتم تشغيل الحلقة أعلاه بشكل لا نهائي لأن كل مرة أقترب فيها من 49 ، يتم تعيينها إلى 0. هذا يعني أني لم تصل إلى 100 لإنهاء الحلقة ، لذا فإن الحلقة هي حلقة لا نهائية. يتم تشغيل الحلقة أعلاه بشكل لا نهائي لأن كل مرة أقترب فيها من 49 ، يتم تعيينها إلى 0. هذا يعني أني لم تصل إلى 100 لإنهاء الحلقة ، لذا فإن الحلقة هي حلقة لا نهائية.

View File

@ -6,11 +6,12 @@ localeTitle: حائط اللوب
في `while` حلقة تنفيذ مرارا وتكرارا على كتلة من البيانات حتى الشرط المحدد داخل الأقواس بتقييم ل `false` . على سبيل المثال: في `while` حلقة تنفيذ مرارا وتكرارا على كتلة من البيانات حتى الشرط المحدد داخل الأقواس بتقييم ل `false` . على سبيل المثال:
`while (some_condition_is_true) ```java
while (some_condition_is_true)
{ {
// do something // do something
} }
` ```
يتم تنفيذ كل "التكرار" (من تنفيذ كتلة البيانات) من قبل تقييم الشرط المحدد داخل الأقواس - يتم تنفيذ البيانات فقط إذا تم تقييم الشرط إلى `true` . إذا تم تقييمه إلى " `false` ، يتم استئناف تنفيذ البرنامج من العبارة الموجودة مباشرةً بعد المربع " `while` . يتم تنفيذ كل "التكرار" (من تنفيذ كتلة البيانات) من قبل تقييم الشرط المحدد داخل الأقواس - يتم تنفيذ البيانات فقط إذا تم تقييم الشرط إلى `true` . إذا تم تقييمه إلى " `false` ، يتم استئناف تنفيذ البرنامج من العبارة الموجودة مباشرةً بعد المربع " `while` .
@ -20,7 +21,8 @@ localeTitle: حائط اللوب
في المثال التالي ، يتم إعطاء `expression` بواسطة `iter_While < 10` . نحن زيادة `iter_While` بواسطة `1` كل مرة يتم تنفيذ الحلقة. حلقة `while` فواصل عندما تصل قيمة `iter_While` إلى `10` . في المثال التالي ، يتم إعطاء `expression` بواسطة `iter_While < 10` . نحن زيادة `iter_While` بواسطة `1` كل مرة يتم تنفيذ الحلقة. حلقة `while` فواصل عندما تصل قيمة `iter_While` إلى `10` .
`int iter_While = 0; ```java
int iter_While = 0;
while (iter_While < 10) while (iter_While < 10)
{ {
System.out.print(iter_While + " "); System.out.print(iter_While + " ");
@ -29,12 +31,13 @@ localeTitle: حائط اللوب
iter_While++; iter_While++;
} }
System.out.println("iter_While Value: " + iter_While); System.out.println("iter_While Value: " + iter_While);
` ```
انتاج: انتاج:
`0 1 2 3 4 5 6 7 8 9 ```
0 1 2 3 4 5 6 7 8 9
iter_While Value: 10 iter_While Value: 10
` ```
![:rocket:](//forum.freecodecamp.com/images/emoji/emoji_one/rocket.png?v=2 ":صاروخ:") [تشغيل الكود](https://repl.it/CJYj/0) ![:rocket:](//forum.freecodecamp.com/images/emoji/emoji_one/rocket.png?v=2 ":صاروخ:") [تشغيل الكود](https://repl.it/CJYj/0)

View File

@ -41,14 +41,15 @@ localeTitle: الأساليب 'Methods'
يمكن تمرير المعلمات في الأساليب. المعلمات معلنة فقط بعد اسم الأسلوب ، داخل الأقواس. بناء الجملة لإعلان المعلمة هو \[نوع البيانات\] \[الاسم\]. يمكن تمرير المعلمات في الأساليب. المعلمات معلنة فقط بعد اسم الأسلوب ، داخل الأقواس. بناء الجملة لإعلان المعلمة هو \[نوع البيانات\] \[الاسم\].
`public class Car { ```java
public class Car {
private String name; private String name;
public void changeName(String newName) { public void changeName(String newName) {
name = newName; name = newName;
} }
} }
` ```
كما هو الحال مع أي لغة أخرى ، يتم استخدام الأساليب (أو الوظائف ، إذا كنت هنا من JS world) في كثير من الأحيان من حيث النمطية والقابلية لإعادة الاستخدام. كما هو الحال مع أي لغة أخرى ، يتم استخدام الأساليب (أو الوظائف ، إذا كنت هنا من JS world) في كثير من الأحيان من حيث النمطية والقابلية لإعادة الاستخدام.

View File

@ -10,10 +10,11 @@ POJO لتقف على "كائن جافا قديم سهل". هذا يختلف عن
1. يجب ألا يتم توسيع فئات Java المحددة مسبقًا ؛ 1. يجب ألا يتم توسيع فئات Java المحددة مسبقًا ؛
`public class Foo extends javax.servlet.http.HttpServlet { ```java
public class Foo extends javax.servlet.http.HttpServlet {
...// body ... ...// body ...
} }
` ```
2. يجب أن لا تنفذ واجهات prespecified ؛ 2. يجب أن لا تنفذ واجهات prespecified ؛

View File

@ -12,17 +12,19 @@ localeTitle: ثابتة
**_مثال:_** **_مثال:_**
`public class Counter { ```java
public class Counter {
public static int COUNT = 0; public static int COUNT = 0;
Counter() { Counter() {
COUNT++; COUNT++;
} }
} }
` ```
ستتم مشاركة المتغير `COUNT` بواسطة جميع كائنات تلك الفئة. عندما نقوم بإنشاء كائنات من صف مكافحة لدينا في الرئيسي ، والوصول إلى متغير ثابت. ستتم مشاركة المتغير `COUNT` بواسطة جميع كائنات تلك الفئة. عندما نقوم بإنشاء كائنات من صف مكافحة لدينا في الرئيسي ، والوصول إلى متغير ثابت.
`public class MyClass { ```java
public class MyClass {
public static void main(String[] args) { public static void main(String[] args) {
Counter c1 = new Counter(); Counter c1 = new Counter();
Counter c2 = new Counter(); Counter c2 = new Counter();
@ -30,7 +32,7 @@ localeTitle: ثابتة
} }
} }
// Outputs "2" // Outputs "2"
` ```
Outout هو 2 ، لأن متغير `COUNT` ثابت ويتم زيادته بمقدار واحد في كل مرة يتم إنشاء كائن جديد لفئة Counter. يمكنك أيضًا الوصول إلى المتغير الثابت باستخدام أي كائن من هذه الفئة ، مثل `c1.COUNT` . Outout هو 2 ، لأن متغير `COUNT` ثابت ويتم زيادته بمقدار واحد في كل مرة يتم إنشاء كائن جديد لفئة Counter. يمكنك أيضًا الوصول إلى المتغير الثابت باستخدام أي كائن من هذه الفئة ، مثل `c1.COUNT` .
@ -43,7 +45,8 @@ Outout هو 2 ، لأن متغير `COUNT` ثابت ويتم زيادته بمق
**_مثال:_** **_مثال:_**
`public class Counter { ```java
public class Counter {
public static int COUNT = 0; public static int COUNT = 0;
Counter() { Counter() {
COUNT++; COUNT++;
@ -53,11 +56,12 @@ Outout هو 2 ، لأن متغير `COUNT` ثابت ويتم زيادته بمق
COUNT++; COUNT++;
} }
} }
` ```
يمكن أيضًا استدعاء أساليب ثابتة من مثيل الطبقة. يمكن أيضًا استدعاء أساليب ثابتة من مثيل الطبقة.
`public class MyClass { ```java
public class MyClass {
public static void main(String[] args) { public static void main(String[] args) {
Counter.increment(); Counter.increment();
Counter.increment(); Counter.increment();
@ -65,7 +69,7 @@ Outout هو 2 ، لأن متغير `COUNT` ثابت ويتم زيادته بمق
} }
} }
// Outputs "2" // Outputs "2"
` ```
هو 2 الإخراج لأنه يحصل زيادة بواسطة `increament()` الأسلوب `increament()` . على غرار المتغيرات الثابتة ، يمكن أيضًا الوصول إلى الطرق الثابتة باستخدام متغيرات الحالة. هو 2 الإخراج لأنه يحصل زيادة بواسطة `increament()` الأسلوب `increament()` . على غرار المتغيرات الثابتة ، يمكن أيضًا الوصول إلى الطرق الثابتة باستخدام متغيرات الحالة.
@ -75,22 +79,24 @@ Outout هو 2 ، لأن متغير `COUNT` ثابت ويتم زيادته بمق
**_مثال:_** **_مثال:_**
`public class Saturn { ```java
public class Saturn {
public static final int MOON_COUNT; public static final int MOON_COUNT;
static { static {
MOON_COUNT = 62; MOON_COUNT = 62;
} }
} }
` ```
`public class Main { ```java
public class Main {
public static void main(String[] args) { public static void main(String[] args) {
System.out.println(Saturn.MOON_COUNT); System.out.println(Saturn.MOON_COUNT);
} }
} }
// Outputs "62" // Outputs "62"
` ```
الإخراج هو 62 ، لأنه يتم تعيين متغير `MOON_COUNT` تلك القيمة في كتلة ثابتة. الإخراج هو 62 ، لأنه يتم تعيين متغير `MOON_COUNT` تلك القيمة في كتلة ثابتة.
@ -100,7 +106,8 @@ Outout هو 2 ، لأن متغير `COUNT` ثابت ويتم زيادته بمق
**_مثال:_** **_مثال:_**
`public class Outer { ```java
public class Outer {
public Outer() { public Outer() {
} }
@ -110,15 +117,16 @@ Outout هو 2 ، لأن متغير `COUNT` ثابت ويتم زيادته بمق
} }
} }
} }
` ```
في المثال أعلاه ، يمكن الوصول إلى الطبقة `Inner` مباشرة كعضو ثابت في الفصل `Outer` . في المثال أعلاه ، يمكن الوصول إلى الطبقة `Inner` مباشرة كعضو ثابت في الفصل `Outer` .
`public class Main { ```java
public class Main {
public static void main(String[] args) { public static void main(String[] args) {
Outer.Inner inner = new Outer.Inner(); Outer.Inner inner = new Outer.Inner();
} }
} }
` ```
واحدة من حالات الاستخدام للدروس المتداخلة الثابتة في [نموذج البناء](https://en.wikipedia.org/wiki/Builder_pattern#Java) المستخدمة بشكل شائع في جافا. واحدة من حالات الاستخدام للدروس المتداخلة الثابتة في [نموذج البناء](https://en.wikipedia.org/wiki/Builder_pattern#Java) المستخدمة بشكل شائع في جافا.

View File

@ -42,7 +42,8 @@ localeTitle: تيارات
## أمثلة ## أمثلة
`// print the length of all Strings in a List ```java
// print the length of all Strings in a List
for (String string : Arrays.asList("abc", "de", "f", "abc")) { for (String string : Arrays.asList("abc", "de", "f", "abc")) {
int length = string.length(); int length = string.length();
System.out.println(length); System.out.println(length);
@ -54,9 +55,10 @@ localeTitle: تيارات
.forEach(System.out::println); .forEach(System.out::println);
// output: 3 2 1 3 // output: 3 2 1 3
` ```
`// print all Strings in a List with a Length greater than 2 ```java
// print all Strings in a List with a Length greater than 2
for (String string : Arrays.asList("abc", "de", "f", "abc")) { for (String string : Arrays.asList("abc", "de", "f", "abc")) {
if (string.length() > 2) { if (string.length() > 2) {
System.out.println(string); System.out.println(string);
@ -69,9 +71,10 @@ localeTitle: تيارات
.forEach(System.out::println); .forEach(System.out::println);
// output: abc abc // output: abc abc
` ```
`// create a sorted List with all unique Strings from another List which are longer than or requal 2 ```java
// create a sorted List with all unique Strings from another List which are longer than or requal 2
List<String> result = new ArrayList<>(); List<String> result = new ArrayList<>();
for (String string : Arrays.asList("de", "abc", "f", "abc")) { for (String string : Arrays.asList("de", "abc", "f", "abc")) {
if (string.length() >= 2 if (string.length() >= 2
@ -89,7 +92,7 @@ localeTitle: تيارات
.collect(Collectors.toList()); .collect(Collectors.toList());
// result: abc de // result: abc de
` ```
### مصادر ### مصادر

View File

@ -6,14 +6,16 @@ localeTitle: سلاسل
سلاسل هي تسلسل من الشخصيات. في Java ، تعد `String` `Object` . ينبغي عدم الخلط بين السلاسل مع `char` كأحرف حرفيا 1 قيمة بدلا من سلسلة من الأحرف. لا يزال بإمكانك استخدام قيمة واحدة داخل سلسلة ، ومع ذلك يفضل استخدام `char` عند التحقق من حرف واحد. سلاسل هي تسلسل من الشخصيات. في Java ، تعد `String` `Object` . ينبغي عدم الخلط بين السلاسل مع `char` كأحرف حرفيا 1 قيمة بدلا من سلسلة من الأحرف. لا يزال بإمكانك استخدام قيمة واحدة داخل سلسلة ، ومع ذلك يفضل استخدام `char` عند التحقق من حرف واحد.
`String course = "FCC"; ```java
String course = "FCC";
System.out.println(course instanceof Object); System.out.println(course instanceof Object);
` ```
انتاج: انتاج:
`true ```
` true
```
يمكنك إنشاء كائن سلسلة بالطرق التالية: يمكنك إنشاء كائن سلسلة بالطرق التالية:
@ -27,10 +29,11 @@ localeTitle: سلاسل
في مقتطف الشفرة هذا ، كم عدد كائنات السلسلة التي تم إنشاؤها؟ في مقتطف الشفرة هذا ، كم عدد كائنات السلسلة التي تم إنشاؤها؟
`String str = "This is a string"; ```java
String str = "This is a string";
String str2 = "This is a string"; String str2 = "This is a string";
String str3 = new String("This is a string"); String str3 = new String("This is a string");
` ```
الإجابة هي: يتم إنشاء كائنات سلسلة 2. `str` و `str2` كلاهما يشيران إلى نفس الكائن. `str3` لديه نفس المحتوى ولكن باستخدام القسري `new` خلق كائن جديد ومتميز. الإجابة هي: يتم إنشاء كائنات سلسلة 2. `str` و `str2` كلاهما يشيران إلى نفس الكائن. `str3` لديه نفس المحتوى ولكن باستخدام القسري `new` خلق كائن جديد ومتميز.
@ -38,10 +41,11 @@ localeTitle: سلاسل
يمكنك اختبار ذلك باستخدام swallow أو fast Object Compar `==` و `equals()` . يمكنك اختبار ذلك باستخدام swallow أو fast Object Compar `==` و `equals()` .
`System.out.println(str == str2); // This prints 'true' ```java
System.out.println(str == str2); // This prints 'true'
System.out.println(str == str3); // This prints 'false' System.out.println(str == str3); // This prints 'false'
System.out.println(str.equals(str3)); // This prints 'true' System.out.println(str.equals(str3)); // This prints 'true'
` ```
فيما يلي مثال آخر حول كيفية إنشاء سلسلة في Java باستخدام الطرق المختلفة: فيما يلي مثال آخر حول كيفية إنشاء سلسلة في Java باستخدام الطرق المختلفة:
@ -63,17 +67,19 @@ localeTitle: سلاسل
إذا كنت ترغب في مقارنة قيمة متغيرين للسلسلة ، فلا يمكنك استخدام ==. هذا يرجع إلى حقيقة أن هذا سوف يقارن إشارات المتغيرات وليس القيم المرتبطة بها. لمقارنة القيم المخزنة من السلاسل التي تستخدمها تساوي هذه الطريقة. إذا كنت ترغب في مقارنة قيمة متغيرين للسلسلة ، فلا يمكنك استخدام ==. هذا يرجع إلى حقيقة أن هذا سوف يقارن إشارات المتغيرات وليس القيم المرتبطة بها. لمقارنة القيم المخزنة من السلاسل التي تستخدمها تساوي هذه الطريقة.
`boolean equals(Object obj) ```java
` boolean equals(Object obj)
```
تقوم بإرجاع true إذا كان كائنان متساويان و false على خلاف ذلك. تقوم بإرجاع true إذا كان كائنان متساويان و false على خلاف ذلك.
`String str = "Hello world"; ```java
String str = "Hello world";
String str2 = "Hello world"; String str2 = "Hello world";
System.out.println(str == str2); // This prints false System.out.println(str == str2); // This prints false
System.out.println(str.equals(str2); // This prints true System.out.println(str.equals(str2); // This prints true
` ```
المقارنة الأولى غير صحيحة لأن "==" ينظر إلى المراجع وهي ليست متماثلة. المقارنة الأولى غير صحيحة لأن "==" ينظر إلى المراجع وهي ليست متماثلة.
@ -81,7 +87,8 @@ localeTitle: سلاسل
لدينا عدة طرق يحمل في ثناياه عوامل في سلسلة. فيما يلي مثال لطريقة طول السلسلة (). لدينا عدة طرق يحمل في ثناياه عوامل في سلسلة. فيما يلي مثال لطريقة طول السلسلة ().
`public class StringDemo { ```java
public class StringDemo {
public static void main(String args[]) { public static void main(String args[]) {
String palindrome = "Dot saw I was Tod"; String palindrome = "Dot saw I was Tod";
@ -89,7 +96,7 @@ localeTitle: سلاسل
System.out.println( "String Length is : " + len ); System.out.println( "String Length is : " + len );
} }
} }
` ```
سيؤدي ذلك إلى - `String Length is : 17` سيؤدي ذلك إلى - `String Length is : 17`
@ -105,25 +112,28 @@ localeTitle: سلاسل
"طول" السلسلة هو مجرد عدد الأحرف الموجودة فيه. حتى "hi" هي طول 2 و "Hello" هي length 5. ترجع طريقة length () على سلسلة طولها ، كما يلي: "طول" السلسلة هو مجرد عدد الأحرف الموجودة فيه. حتى "hi" هي طول 2 و "Hello" هي length 5. ترجع طريقة length () على سلسلة طولها ، كما يلي:
`String a = "Hello"; ```java
String a = "Hello";
int len = a.length(); // len is 5 int len = a.length(); // len is 5
` ```
#### طرق المقارنة الأخرى التي يمكن استخدامها أيضًا في السلسلة هي: #### طرق المقارنة الأخرى التي يمكن استخدامها أيضًا في السلسلة هي:
1. equalsIgnoreCase (): - يقارن السلسلة دون الأخذ بعين الاعتبار حساسية الحالة. 1. equalsIgnoreCase (): - يقارن السلسلة دون الأخذ بعين الاعتبار حساسية الحالة.
`String a = "HELLO"; ```java
String a = "HELLO";
String b = "hello"; String b = "hello";
System.out.println(a.equalsIgnoreCase(b)); // It will print true System.out.println(a.equalsIgnoreCase(b)); // It will print true
` ```
2. قارنTo: - يقارن قيمة lexicographically وإرجاع عدد صحيح. 2. قارنTo: - يقارن قيمة lexicographically وإرجاع عدد صحيح.
`String a = "Sam"; ```java
String a = "Sam";
String b = "Sam"; String b = "Sam";
String c = "Ram"; String c = "Ram";
System.out.println(a.compareTo(b)); // 0 System.out.println(a.compareTo(b)); // 0
System.out.prinltn(a.compareTo(c)); // 1 since (a>b) System.out.prinltn(a.compareTo(c)); // 1 since (a>b)
System.out.println(c.compareTo(a)); // -1 since (c<a) System.out.println(c.compareTo(a)); // -1 since (c<a)
` ```

View File

@ -8,8 +8,9 @@ localeTitle: يرمي
**_مثال:_** **_مثال:_**
`throw new ArithmeticException("/ by zero not permitted"); ```java
` throw new ArithmeticException("/ by zero not permitted");
```
##### المزيد من الموارد ##### المزيد من الموارد

View File

@ -16,16 +16,18 @@ localeTitle: المتغيرات
عادة ، يمكنك أن _تعلن_ (أي إنشاء) المتغيرات وفقا للبناء التالي: < _data-type_ > < _variableName_ عادة ، يمكنك أن _تعلن_ (أي إنشاء) المتغيرات وفقا للبناء التالي: < _data-type_ > < _variableName_
`// Primitive Data Type ```java
// Primitive Data Type
int i; int i;
// Reference Data Type // Reference Data Type
Float myFloat; Float myFloat;
` ```
يمكنك _تعيين_ قيمة للمتغير إما في نفس الوقت الذي تقوم فيه بالتصريح (الذي يسمى _التهيئة_ ) ، أو في أي مكان في الكود بعد أن تقوم بإعلانه. الرمز **\=** يستخدم لنفسه. يمكنك _تعيين_ قيمة للمتغير إما في نفس الوقت الذي تقوم فيه بالتصريح (الذي يسمى _التهيئة_ ) ، أو في أي مكان في الكود بعد أن تقوم بإعلانه. الرمز **\=** يستخدم لنفسه.
`// Initialise the variable of Primitive Data Type 'int' to store the value 10 ```java
// Initialise the variable of Primitive Data Type 'int' to store the value 10
int i = 10; int i = 10;
double amount = 10.0; double amount = 10.0;
boolean isOpen = false; boolean isOpen = false;
@ -43,7 +45,7 @@ localeTitle: المتغيرات
//represented with this code //represented with this code
int byteValue = 0B101; int byteValue = 0B101;
byte anotherByte = (byte)0b00100001; byte anotherByte = (byte)0b00100001;
` ```
كما يتضح من المثال أعلاه ، فإن متغيرات النوع البدائي تتصرف بشكل مختلف قليلاً عن متغيرات النوع المرجعي (& التفاف) - بينما المتغيرات الأولية _تخزن_ القيمة الفعلية ، _تشير_ المتغيرات المرجعية _إلى_ "كائن" يحتوي على القيمة الفعلية. يمكنك معرفة المزيد في الأقسام المرتبطة أدناه. كما يتضح من المثال أعلاه ، فإن متغيرات النوع البدائي تتصرف بشكل مختلف قليلاً عن متغيرات النوع المرجعي (& التفاف) - بينما المتغيرات الأولية _تخزن_ القيمة الفعلية ، _تشير_ المتغيرات المرجعية _إلى_ "كائن" يحتوي على القيمة الفعلية. يمكنك معرفة المزيد في الأقسام المرتبطة أدناه.

View File

@ -45,11 +45,11 @@ Question: شرح ng-App directive. الإجابة: يبدأ توجيه ng-app ت
سؤال: اشرح توجيه ng-init الإجابة: يشرح توجيه ng-init بيانات تطبيق AngularJS. يتم استخدامه لوضع القيم للمتغيرات لاستخدامها في التطبيق. على سبيل المثال: في المثال أدناه ، قمنا بتهيئة مجموعة من البلدان ، باستخدام بنية JSON لتحديد مجموعة من البلدان. سؤال: اشرح توجيه ng-init الإجابة: يشرح توجيه ng-init بيانات تطبيق AngularJS. يتم استخدامه لوضع القيم للمتغيرات لاستخدامها في التطبيق. على سبيل المثال: في المثال أدناه ، قمنا بتهيئة مجموعة من البلدان ، باستخدام بنية JSON لتحديد مجموعة من البلدان.
` ```html
<div ng-app = "" ng-init = "countries = [{locale:'en-US',name:'United States'}, {locale:'en-GB',name:'United Kingdom'}, {locale:'en-FR',name:'France'}]"> <div ng-app = "" ng-init = "countries = [{locale:'en-US',name:'United States'}, {locale:'en-GB',name:'United Kingdom'}, {locale:'en-FR',name:'France'}]">
... ...
</div> </div>
` ```
سؤال: كيف تشارك البيانات بين وحدات التحكم؟ الإجابة: أنشئ خدمة AngularJS التي ستحتفظ بالبيانات وحقنها داخل وحدات التحكم. يعد استخدام الخدمة هو الطريقة الأنظف والأسرع والأسهل للاختبار. ومع ذلك ، هناك طريقتان آخرتان لتنفيذ مشاركة البيانات بين وحدات التحكم ، مثل: - استخدام الأحداث - استخدام $ parent ، nextSibling ، controllerAs ، وما إلى ذلك للوصول مباشرة إلى وحدات التحكم - استخدام $ rootScope لإضافة البيانات على (ليس ممارسة جيدة) سؤال: كيف تشارك البيانات بين وحدات التحكم؟ الإجابة: أنشئ خدمة AngularJS التي ستحتفظ بالبيانات وحقنها داخل وحدات التحكم. يعد استخدام الخدمة هو الطريقة الأنظف والأسرع والأسهل للاختبار. ومع ذلك ، هناك طريقتان آخرتان لتنفيذ مشاركة البيانات بين وحدات التحكم ، مثل: - استخدام الأحداث - استخدام $ parent ، nextSibling ، controllerAs ، وما إلى ذلك للوصول مباشرة إلى وحدات التحكم - استخدام $ rootScope لإضافة البيانات على (ليس ممارسة جيدة)

View File

@ -9,8 +9,9 @@ localeTitle: الحجج
\`\` \`جافا سكريبت \`\` \`جافا سكريبت
function storeNames () {return arguments؛ } function storeNames () {return arguments؛ }
`* Then, when we execute that function with **n arguments**, 3 in this case, it will return the object to us and it will **look like** an array. We can convert it to an array, but more on that later... ```
` * Then, when we execute that function with **n arguments**, 3 in this case, it will return the object to us and it will **look like** an array. We can convert it to an array, but more on that later...
```
جافا سكريبت // إذا قمنا بتنفيذ السطر التالي في وحدة التحكم: storeNames ("Mulder"، "Scully"، "Alex Kryceck")؛ // سيكون الناتج {'0': 'Mulder' ، '1': 'Scully' ، '2': 'Alex Kryceck'} جافا سكريبت // إذا قمنا بتنفيذ السطر التالي في وحدة التحكم: storeNames ("Mulder"، "Scully"، "Alex Kryceck")؛ // سيكون الناتج {'0': 'Mulder' ، '1': 'Scully' ، '2': 'Alex Kryceck'}
@ -25,8 +26,9 @@ function storeNames () {return arguments؛ }
// أو طريقة es6: var args = Array.from (الحجج) // أو طريقة es6: var args = Array.from (الحجج)
`Since **slice()** has two (the parameter **end** is optional) parameters, you can grab a certain portion of the arguments by specifying (using the _slice.call()_ method renders these two parameters optional, not just _end_) the beginning and the ending of your portion; check out the following code: ```
` Since **slice()** has two (the parameter **end** is optional) parameters, you can grab a certain portion of the arguments by specifying (using the _slice.call()_ method renders these two parameters optional, not just _end_) the beginning and the ending of your portion; check out the following code:
```
جافا سكريبت function getGrades () { var args = Array.prototype.slice.call (الحجج ، 1 ، 3) ؛ عودة الارجاع } جافا سكريبت function getGrades () { var args = Array.prototype.slice.call (الحجج ، 1 ، 3) ؛ عودة الارجاع }
@ -34,7 +36,8 @@ function storeNames () {return arguments؛ }
// يجب أن يكون الناتج: // // \[100 ، 75\] <- لماذا؟ لأنه بدأ من الفهرس 1 وتوقف عند الفهرس 3 // لذلك ، لم يؤخذ في الاعتبار المؤشر 3 (40). // // إذا أزلنا المعلمة "3" ، لن نتركها سوى (الحجج ، 1) // كل حجة من الفهرس 1: \[100 ، 75 ، 40 ، 89 ، 95\]. // يجب أن يكون الناتج: // // \[100 ، 75\] <- لماذا؟ لأنه بدأ من الفهرس 1 وتوقف عند الفهرس 3 // لذلك ، لم يؤخذ في الاعتبار المؤشر 3 (40). // // إذا أزلنا المعلمة "3" ، لن نتركها سوى (الحجج ، 1) // كل حجة من الفهرس 1: \[100 ، 75 ، 40 ، 89 ، 95\].
`### Optimization issues with Array.slice() ```
### Optimization issues with Array.slice()
There is a little problem, it's not recommended to use slice in the arguments object (optimization reasons)... There is a little problem, it's not recommended to use slice in the arguments object (optimization reasons)...
@ -45,7 +48,7 @@ function storeNames () {return arguments؛ }
So, what other method is available to convert _arguments_ to an array? I recommend the for-loop (not the for-in loop), you can do it like this: So, what other method is available to convert _arguments_ to an array? I recommend the for-loop (not the for-in loop), you can do it like this:
` ```
جافا سكريبت var args = \[\]؛ // صفيف فارغ ، في البداية. لـ (var i = 0؛ i <arguments.length؛ i ++) { args.push (الحجج \[أنا\]) } // Now 'args' هي مصفوفة تحمل وسائطك. \`\` \` جافا سكريبت var args = \[\]؛ // صفيف فارغ ، في البداية. لـ (var i = 0؛ i <arguments.length؛ i ++) { args.push (الحجج \[أنا\]) } // Now 'args' هي مصفوفة تحمل وسائطك. \`\` \`

View File

@ -64,18 +64,20 @@ RabbitMQ يحدث ليكون أسهل وسيط منصات منصة الوسيط
بعد استيراد `tortoise` `node-cron` ، لقد ذهبنا إلى الأمام وأضفت اتصالاً بـ RabbitMQ. بعد ذلك ، دعنا نكتب وظيفة سريعة وقذرة تنشر رسالة إلى أرنب: بعد استيراد `tortoise` `node-cron` ، لقد ذهبنا إلى الأمام وأضفت اتصالاً بـ RabbitMQ. بعد ذلك ، دعنا نكتب وظيفة سريعة وقذرة تنشر رسالة إلى أرنب:
`function scheduleMessage(){ ```javascript
function scheduleMessage(){
let payload = {url: 'https://randomuser.me/api'} let payload = {url: 'https://randomuser.me/api'}
tortoise tortoise
.exchange('random-user-exchange', 'direct', { durable:false }) .exchange('random-user-exchange', 'direct', { durable:false })
.publish('random-user-key', payload) .publish('random-user-key', payload)
} }
` ```
هذا بسيط بما فيه الكفاية. لقد حددنا قاموسًا يحتوي على عنوان URL [لواجهة](https://randomuser.me/) برمجة تطبيقات [RandomUser.me](https://randomuser.me/) ، والتي يتم نشرها بعد ذلك إلى `random-user-exchange` تبادل `random-user-exchange` على RabbitMQ ، مع `random-user-key` التوجيه `random-user-key` . كما ذكرنا من قبل ، فإن مفتاح التوجيه هو الذي يحدد من الذي يستهلك رسالة. الآن ، دعنا نكتب قاعدة جدولة ، لنشر هذه الرسالة كل 60 ثانية. هذا بسيط بما فيه الكفاية. لقد حددنا قاموسًا يحتوي على عنوان URL [لواجهة](https://randomuser.me/) برمجة تطبيقات [RandomUser.me](https://randomuser.me/) ، والتي يتم نشرها بعد ذلك إلى `random-user-exchange` تبادل `random-user-exchange` على RabbitMQ ، مع `random-user-key` التوجيه `random-user-key` . كما ذكرنا من قبل ، فإن مفتاح التوجيه هو الذي يحدد من الذي يستهلك رسالة. الآن ، دعنا نكتب قاعدة جدولة ، لنشر هذه الرسالة كل 60 ثانية.
`cron.schedule('60 * * * * *', scheduleMessage) ```javascript
` cron.schedule('60 * * * * *', scheduleMessage)
```
وناشرنا جاهز! ولكن في الحقيقة ليس جيدًا بدون المستهلك أن يستهلك هذه الرسائل فعليًا! لكننا نحتاج أولاً إلى مكتبة يمكنها الاتصال بعنوان URL في هذه الرسائل. شخصيا ، أنا استخدم `superagent` : `npm install --save superagent` . وناشرنا جاهز! ولكن في الحقيقة ليس جيدًا بدون المستهلك أن يستهلك هذه الرسائل فعليًا! لكننا نحتاج أولاً إلى مكتبة يمكنها الاتصال بعنوان URL في هذه الرسائل. شخصيا ، أنا استخدم `superagent` : `npm install --save superagent` .
@ -97,7 +99,8 @@ RabbitMQ يحدث ليكون أسهل وسيط منصات منصة الوسيط
وقت كتابة التعليمات البرمجية لاستهلاك الرسائل فعليًا: وقت كتابة التعليمات البرمجية لاستهلاك الرسائل فعليًا:
`tortoise ```javascript
tortoise
.queue('random-user-queue', { durable: false }) .queue('random-user-queue', { durable: false })
// Add as many bindings as needed // Add as many bindings as needed
.exchange('random-user-exchange', 'direct', 'random-user-key', { durable: false }) .exchange('random-user-exchange', 'direct', 'random-user-key', { durable: false })
@ -110,7 +113,7 @@ RabbitMQ يحدث ليكون أسهل وسيط منصات منصة الوسيط
}) })
ack() // or nack() ack() // or nack()
}) })
` ```
هنا ، أخبرنا `tortoise` أن نستمع إلى `random-user-queue` ، وهذا يرتبط `random-user-key` `random-user-exchange` . بمجرد استلام الرسالة ، يتم استرداد الحمولة من `msg` ، ويتم تمريرها إلى `getURL` ، والتي بدورها تقوم بإرجاع Promation مع استجابة JSON المطلوبة من RandomUser API. هنا ، أخبرنا `tortoise` أن نستمع إلى `random-user-queue` ، وهذا يرتبط `random-user-key` `random-user-exchange` . بمجرد استلام الرسالة ، يتم استرداد الحمولة من `msg` ، ويتم تمريرها إلى `getURL` ، والتي بدورها تقوم بإرجاع Promation مع استجابة JSON المطلوبة من RandomUser API.

View File

@ -8,11 +8,12 @@ Booleans هي نوع بيانات بدائي شائع الاستخدام في ل
في Javascript ، غالبًا ما يكون هناك نوع الإكراه الضمني للقيمة المنطقية. إذا كان لديك مثلاً عبارة if تتحقق من تعبير معين ، فسيتم فرض هذا التعبير على قيمة منطقية: في Javascript ، غالبًا ما يكون هناك نوع الإكراه الضمني للقيمة المنطقية. إذا كان لديك مثلاً عبارة if تتحقق من تعبير معين ، فسيتم فرض هذا التعبير على قيمة منطقية:
`var a = 'a string'; ```javascript
var a = 'a string';
if (a) { if (a) {
console.log(a); // logs 'a string' console.log(a); // logs 'a string'
} }
` ```
هناك بعض القيم القليلة التي سيتم فرضها على false: هناك بعض القيم القليلة التي سيتم فرضها على false:
@ -27,7 +28,8 @@ Booleans هي نوع بيانات بدائي شائع الاستخدام في ل
إحدى الطرق التي يتم بها استخدام نوع الإكراه هي استخدام مشغلي (أو `||` ) و ( `&&` ): إحدى الطرق التي يتم بها استخدام نوع الإكراه هي استخدام مشغلي (أو `||` ) و ( `&&` ):
`var a = 'word'; ```javascript
var a = 'word';
var b = false; var b = false;
var c = true; var c = true;
var d = 0 var d = 0
@ -44,7 +46,7 @@ Booleans هي نوع بيانات بدائي شائع الاستخدام في ل
console.log(g || d); // 0 console.log(g || d); // 0
console.log(a && c); // true console.log(a && c); // true
console.log(c && a); // 'word' console.log(c && a); // 'word'
` ```
كما ترى ، يفحص المشغل _أو_ العامل الأول. إذا كان هذا صحيحًا أو صريحًا ، فسيتم إرجاعه على الفور (وهذا هو سبب حصولنا على كلمة في الحالة الأولى وصحيح في الحالة الثانية). إذا لم يكن صحيحا أو صائبا ، فإنه يعيد المعامل الثاني (وهذا هو السبب في أننا نحصل على كلمة في الحالة الثالثة). كما ترى ، يفحص المشغل _أو_ العامل الأول. إذا كان هذا صحيحًا أو صريحًا ، فسيتم إرجاعه على الفور (وهذا هو سبب حصولنا على كلمة في الحالة الأولى وصحيح في الحالة الثانية). إذا لم يكن صحيحا أو صائبا ، فإنه يعيد المعامل الثاني (وهذا هو السبب في أننا نحصل على كلمة في الحالة الثالثة).
@ -60,33 +62,37 @@ Booleans هي نوع بيانات بدائي شائع الاستخدام في ل
يتم تقييم أي كائن لا تكون قيمته غير محددة أو خالية ، بما في ذلك كائن منطقي قيمته غير صحيح ، إلى true عند تمريره إلى بيان شرطي. إذا كان هذا صحيحًا ، فسيؤدي هذا إلى تنفيذ الوظيفة. على سبيل المثال ، يتم تقييم الشرط الموجود في العبارة if في الحالة التالية: يتم تقييم أي كائن لا تكون قيمته غير محددة أو خالية ، بما في ذلك كائن منطقي قيمته غير صحيح ، إلى true عند تمريره إلى بيان شرطي. إذا كان هذا صحيحًا ، فسيؤدي هذا إلى تنفيذ الوظيفة. على سبيل المثال ، يتم تقييم الشرط الموجود في العبارة if في الحالة التالية:
`var x = new Boolean(false); ```javascript
var x = new Boolean(false);
if (x) { if (x) {
// this code is executed // this code is executed
} }
` ```
لا ينطبق هذا السلوك على الأوليات البولية. على سبيل المثال ، يتم تقييم الشرط الموجود في العبارة if في حالة الخطأ: لا ينطبق هذا السلوك على الأوليات البولية. على سبيل المثال ، يتم تقييم الشرط الموجود في العبارة if في حالة الخطأ:
`var x = false; ```javascript
var x = false;
if (x) { if (x) {
// this code is not executed // this code is not executed
} }
` ```
لا تستخدم كائنًا منطقيًا لتحويل قيمة غير منطقية إلى قيمة منطقية. بدلاً من ذلك ، استخدم Boolean كدالة لتنفيذ هذه المهمة: لا تستخدم كائنًا منطقيًا لتحويل قيمة غير منطقية إلى قيمة منطقية. بدلاً من ذلك ، استخدم Boolean كدالة لتنفيذ هذه المهمة:
`var x = Boolean(expression); // preferred ```javascript
var x = Boolean(expression); // preferred
var x = new Boolean(expression); // don't use var x = new Boolean(expression); // don't use
` ```
إذا قمت بتحديد أي كائن ، بما في ذلك كائن منطقي قيمته غير كاذبة ، كالقيمة الأولية لكائن Boolean ، فإن الكائن المنطقي الجديد يحتوي على قيمة true. إذا قمت بتحديد أي كائن ، بما في ذلك كائن منطقي قيمته غير كاذبة ، كالقيمة الأولية لكائن Boolean ، فإن الكائن المنطقي الجديد يحتوي على قيمة true.
`var myFalse = new Boolean(false); // initial value of false ```javascript
var myFalse = new Boolean(false); // initial value of false
var g = new Boolean(myFalse); // initial value of true var g = new Boolean(myFalse); // initial value of true
var myString = new String('Hello'); // string object var myString = new String('Hello'); // string object
var s = new Boolean(myString); // initial value of true var s = new Boolean(myString); // initial value of true
` ```
لا تستخدم كائن منطقي بدلاً من بدائي منطقي. لا تستخدم كائن منطقي بدلاً من بدائي منطقي.

View File

@ -14,7 +14,8 @@ localeTitle: وظائف رد الاتصال
لتوضيح معاودة الاتصال ، دعنا نبدأ بمثال بسيط: لتوضيح معاودة الاتصال ، دعنا نبدأ بمثال بسيط:
`function createQuote(quote, callback){ ```javascript
function createQuote(quote, callback){
var myQuote = "Like I always say, " + quote; var myQuote = "Like I always say, " + quote;
callback(myQuote); // 2 callback(myQuote); // 2
} }
@ -27,7 +28,7 @@ localeTitle: وظائف رد الاتصال
// Result in console: // Result in console:
// Like I always say, eat your vegetables! // Like I always say, eat your vegetables!
` ```
في المثال أعلاه ، يعد `createQuote` هو دالة الترتيب الأعلى ، والتي تقبل الوسيطتين ، والثانية هي معاودة الاتصال. يتم استخدام وظيفة `logQuote` لتمرير في وظيفة رد الاتصال الخاصة بنا. عندما نقوم بتنفيذ وظيفة `createQuote` _(1)_ ، نلاحظ أننا _لا_ `logQuote` أقواس `logQuote` عندما `logQuote` كوسيطة. هذا لأننا لا نريد تنفيذ وظيفة معاودة الاتصال الخاصة بنا على الفور ، فنحن نريد ببساطة تمرير تعريف الدالة إلى الوظيفة ذات الترتيب الأعلى بحيث يمكن تنفيذه لاحقًا. في المثال أعلاه ، يعد `createQuote` هو دالة الترتيب الأعلى ، والتي تقبل الوسيطتين ، والثانية هي معاودة الاتصال. يتم استخدام وظيفة `logQuote` لتمرير في وظيفة رد الاتصال الخاصة بنا. عندما نقوم بتنفيذ وظيفة `createQuote` _(1)_ ، نلاحظ أننا _لا_ `logQuote` أقواس `logQuote` عندما `logQuote` كوسيطة. هذا لأننا لا نريد تنفيذ وظيفة معاودة الاتصال الخاصة بنا على الفور ، فنحن نريد ببساطة تمرير تعريف الدالة إلى الوظيفة ذات الترتيب الأعلى بحيث يمكن تنفيذه لاحقًا.
@ -35,18 +36,20 @@ localeTitle: وظائف رد الاتصال
بالإضافة إلى ذلك ، يمكن أن نمر في وظائف مجهولة مثل الاستدعاءات. سيكون للنداء أدناه إلى `createQuote` نفس النتيجة كما في المثال أعلاه: بالإضافة إلى ذلك ، يمكن أن نمر في وظائف مجهولة مثل الاستدعاءات. سيكون للنداء أدناه إلى `createQuote` نفس النتيجة كما في المثال أعلاه:
`createQuote("eat your vegetables!", function(quote){ ```javascript
createQuote("eat your vegetables!", function(quote){
console.log(quote); console.log(quote);
}); });
` ```
بالمناسبة ، لا _تحتاج_ إلى استخدام الكلمة "callback" كاسم لوسيطة الخاص بك ، تحتاج Javascript فقط إلى معرفة أنه اسم الوسيطة الصحيح. استناداً إلى المثال أعلاه ، ستتصرف الدالة أدناه بنفس الطريقة بالضبط. بالمناسبة ، لا _تحتاج_ إلى استخدام الكلمة "callback" كاسم لوسيطة الخاص بك ، تحتاج Javascript فقط إلى معرفة أنه اسم الوسيطة الصحيح. استناداً إلى المثال أعلاه ، ستتصرف الدالة أدناه بنفس الطريقة بالضبط.
`function createQuote(quote, functionToCall) { ```javascript
function createQuote(quote, functionToCall) {
var myQuote = "Like I always say, " + quote; var myQuote = "Like I always say, " + quote;
functionToCall(myQuote); functionToCall(myQuote);
} }
` ```
## لماذا استخدام Callbacks؟ ## لماذا استخدام Callbacks؟
@ -54,7 +57,8 @@ localeTitle: وظائف رد الاتصال
دعونا نلقي نظرة على مثال يحاكي طلب إلى الخادم: دعونا نلقي نظرة على مثال يحاكي طلب إلى الخادم:
`function serverRequest(query, callback){ ```javascript
function serverRequest(query, callback){
setTimeout(function(){ setTimeout(function(){
var response = query + "full!"; var response = query + "full!";
callback(response); callback(response);
@ -69,7 +73,7 @@ localeTitle: وظائف رد الاتصال
// Result in console after 5 second delay: // Result in console after 5 second delay:
// Response from the server: The glass is half full! // Response from the server: The glass is half full!
` ```
في المثال أعلاه ، نجري طلبًا زائفًا على الخادم. بعد مرور 5 ثوانٍ يتم تعديل الاستجابة ثم يتم تنفيذ `getResults` وظيفة رد الاتصال الخاصة بنا. للاطلاع على هذا الإجراء ، يمكنك نسخ / لصق الشفرة الواردة أعلاه في أداة مطور المتصفح وتنفيذها. في المثال أعلاه ، نجري طلبًا زائفًا على الخادم. بعد مرور 5 ثوانٍ يتم تعديل الاستجابة ثم يتم تنفيذ `getResults` وظيفة رد الاتصال الخاصة بنا. للاطلاع على هذا الإجراء ، يمكنك نسخ / لصق الشفرة الواردة أعلاه في أداة مطور المتصفح وتنفيذها.

View File

@ -25,7 +25,8 @@ localeTitle: الطبقات
هذا غير مدعوم في المتصفحات القديمة وتم تقديمه في ECMAScript 2015. هذا غير مدعوم في المتصفحات القديمة وتم تقديمه في ECMAScript 2015.
`class Person { ```javascript
class Person {
constructor(firstName, lastName) { constructor(firstName, lastName) {
this._firstName = firstName; this._firstName = firstName;
this._lastName = lastName; this._lastName = lastName;
@ -45,7 +46,7 @@ localeTitle: الطبقات
} }
} }
` ```
@ -58,7 +59,8 @@ localeTitle: الطبقات
هنا ، تتم إضافة جميع الأساليب إلى النموذج الأولي هنا ، تتم إضافة جميع الأساليب إلى النموذج الأولي
`function Person(firstName, lastName) { ```javascript
function Person(firstName, lastName) {
this._firstName = firstName; this._firstName = firstName;
this._lastName = lastName; this._lastName = lastName;
} }
@ -77,11 +79,12 @@ localeTitle: الطبقات
console.log(this._firstName, this._lastName, 'is a', this._profession); console.log(this._firstName, this._lastName, 'is a', this._profession);
} }
}) })
` ```
يمكنك أيضا كتابة أساليب النموذج الأولي على وظيفة `Person` النحو التالي يمكنك أيضا كتابة أساليب النموذج الأولي على وظيفة `Person` النحو التالي
`Person.prototype = { ```javascript
Person.prototype = {
log: function() { log: function() {
console.log('I am ', this._firstName, this._lastName); console.log('I am ', this._firstName, this._lastName);
} }
@ -94,13 +97,14 @@ localeTitle: الطبقات
} }
} }
` ```
### استخدام أساليب مضافة داخليا ### استخدام أساليب مضافة داخليا
هنا تضاف الأساليب داخليا بدلا من النموذج الأولي هنا تضاف الأساليب داخليا بدلا من النموذج الأولي
`function Person(firstName, lastName) { ```javascript
function Person(firstName, lastName) {
this._firstName = firstName; this._firstName = firstName;
this._lastName = lastName; this._lastName = lastName;
@ -117,13 +121,14 @@ localeTitle: الطبقات
} }
}) })
} }
` ```
### إخفاء التفاصيل في فصول بالرموز ### إخفاء التفاصيل في فصول بالرموز
في أغلب الأحيان يجب إخفاء بعض الخصائص والأساليب لمنع الوصول من خارج الوظيفة. مع الفئات ، للحصول على هذه الوظيفة ، إحدى الطرق للقيام بذلك باستخدام الرموز. Symbol هو نوع جديد من جافا سكريبت المدمج ، والذي يمكن استدعاؤه لإعطاء قيمة رمزية جديدة. كل رمز فريد ويمكن استخدامه كمفتاح على الكائن. لذا ، فإن إحدى حالات استخدام الرموز هي أنه يمكنك إضافة شيء إلى كائن قد لا تمتلكه ، وقد لا ترغب في التصادم مع أي مفاتيح أخرى للعنصر ، لذلك ، فإن إنشاء كائن جديد وإضافة خاصية على هذا الكائن باستخدام الرمز هو الأكثر أمانًا . أيضا ، عندما يتم إضافة قيمة الرمز إلى كائن ؛ لا أحد آخر يعرف كيفية الحصول عليه. في أغلب الأحيان يجب إخفاء بعض الخصائص والأساليب لمنع الوصول من خارج الوظيفة. مع الفئات ، للحصول على هذه الوظيفة ، إحدى الطرق للقيام بذلك باستخدام الرموز. Symbol هو نوع جديد من جافا سكريبت المدمج ، والذي يمكن استدعاؤه لإعطاء قيمة رمزية جديدة. كل رمز فريد ويمكن استخدامه كمفتاح على الكائن. لذا ، فإن إحدى حالات استخدام الرموز هي أنه يمكنك إضافة شيء إلى كائن قد لا تمتلكه ، وقد لا ترغب في التصادم مع أي مفاتيح أخرى للعنصر ، لذلك ، فإن إنشاء كائن جديد وإضافة خاصية على هذا الكائن باستخدام الرمز هو الأكثر أمانًا . أيضا ، عندما يتم إضافة قيمة الرمز إلى كائن ؛ لا أحد آخر يعرف كيفية الحصول عليه.
`class Person { ```javascript
class Person {
constructor(firstName, lastName) { constructor(firstName, lastName) {
this._firstName = firstName; this._firstName = firstName;
this._lastName = lastName; this._lastName = lastName;
@ -163,6 +168,6 @@ localeTitle: الطبقات
get profession() { get profession() {
console.log(this[s_firstName], this._lastName, 'is a', this._profession); console.log(this[s_firstName], this._lastName, 'is a', this._profession);
} }
` ```
#### معلومات اكثر: #### معلومات اكثر:

View File

@ -32,7 +32,8 @@ localeTitle: إغلاق
### مثال آخر ### مثال آخر
`function by(propName) { ```js
function by(propName) {
return function(a, b) { return function(a, b) {
return a[propName] - b[propName]; return a[propName] - b[propName];
} }
@ -45,11 +46,12 @@ localeTitle: إغلاق
const arr_ = [person1, person2, person3]; const arr_ = [person1, person2, person3];
const arr_sorted = arr_.sort(by('height')); // [ { name: 'nicholas', height: 66 }, { name: 'rob', height: 70 },{ name: 'joe', height: 72 } ] const arr_sorted = arr_.sort(by('height')); // [ { name: 'nicholas', height: 66 }, { name: 'rob', height: 70 },{ name: 'joe', height: 72 } ]
` ```
إغلاق "يتذكر" البيئة التي تم إنشاؤه فيها. تتكون هذه البيئة من أي متغيرات محلية كانت ضمن النطاق في الوقت الذي تم فيه إنشاء الإغلاق. إغلاق "يتذكر" البيئة التي تم إنشاؤه فيها. تتكون هذه البيئة من أي متغيرات محلية كانت ضمن النطاق في الوقت الذي تم فيه إنشاء الإغلاق.
`function outside(num) { ```js
function outside(num) {
var rememberedVar = num; // In this example, rememberedVar is the lexical environment that the closure 'remembers' var rememberedVar = num; // In this example, rememberedVar is the lexical environment that the closure 'remembers'
return function inside() { // This is the function which the closure 'remembers' return function inside() { // This is the function which the closure 'remembers'
console.log(rememberedVar) console.log(rememberedVar)
@ -61,7 +63,7 @@ localeTitle: إغلاق
remember1(); // This now executes the function 'inside' which console.logs(rememberedVar) => 7 remember1(); // This now executes the function 'inside' which console.logs(rememberedVar) => 7
remember2(); // This now executes the function 'inside' which console.logs(rememberedVar) => 9 remember2(); // This now executes the function 'inside' which console.logs(rememberedVar) => 9
` ```
عمليات الإغلاق مفيدة لأنها تتيح لك "تذكر" البيانات ثم تتيح لك العمل على هذه البيانات من خلال الوظائف التي تم إرجاعها. هذا يسمح لجافا سكريبت بمحاكاة الأساليب الخاصة الموجودة في لغات البرمجة الأخرى. تعتبر الطرق الخاصة مفيدة لتقييد الوصول إلى التعليمات البرمجية بالإضافة إلى إدارة مساحة الاسم العام الخاصة بك. عمليات الإغلاق مفيدة لأنها تتيح لك "تذكر" البيانات ثم تتيح لك العمل على هذه البيانات من خلال الوظائف التي تم إرجاعها. هذا يسمح لجافا سكريبت بمحاكاة الأساليب الخاصة الموجودة في لغات البرمجة الأخرى. تعتبر الطرق الخاصة مفيدة لتقييد الوصول إلى التعليمات البرمجية بالإضافة إلى إدارة مساحة الاسم العام الخاصة بك.
@ -69,7 +71,8 @@ localeTitle: إغلاق
يمكن أيضًا استخدام عمليات الإغلاق لتغليف البيانات / الطرق الخاصة. الق نظرة على هذا المثال: يمكن أيضًا استخدام عمليات الإغلاق لتغليف البيانات / الطرق الخاصة. الق نظرة على هذا المثال:
`const bankAccount = (initialBalance) => { ```javascript
const bankAccount = (initialBalance) => {
const balance = initialBalance; const balance = initialBalance;
return { return {
@ -87,7 +90,7 @@ localeTitle: إغلاق
account.getBalance(); // 100 account.getBalance(); // 100
account.deposit(10); // 110 account.deposit(10); // 110
` ```
في هذا المثال ، لن نتمكن من الوصول إلى `balance` من أي مكان خارج وظيفة `bankAccount` ، مما يعني أننا قمنا للتو بإنشاء متغير خاص. أين الإغلاق؟ حسنًا ، فكر في ما `bankAccount()` . إنها في الواقع ترجع كائنًا يحتوي على مجموعة من الوظائف داخله ، ومع ذلك عندما نطلق على `account.getBalance()` ، فإن الوظيفة قادرة على "تذكر" مرجعها الأولي إلى `balance` . هذه هي قوة الإغلاق ، حيث "تتذكر" الدالة نطاقها المعجمى (ترجمة النطاق الزمني) ، حتى عندما يتم تنفيذ الوظيفة خارج النطاق المعجمى. في هذا المثال ، لن نتمكن من الوصول إلى `balance` من أي مكان خارج وظيفة `bankAccount` ، مما يعني أننا قمنا للتو بإنشاء متغير خاص. أين الإغلاق؟ حسنًا ، فكر في ما `bankAccount()` . إنها في الواقع ترجع كائنًا يحتوي على مجموعة من الوظائف داخله ، ومع ذلك عندما نطلق على `account.getBalance()` ، فإن الوظيفة قادرة على "تذكر" مرجعها الأولي إلى `balance` . هذه هي قوة الإغلاق ، حيث "تتذكر" الدالة نطاقها المعجمى (ترجمة النطاق الزمني) ، حتى عندما يتم تنفيذ الوظيفة خارج النطاق المعجمى.