SlideShare une entreprise Scribd logo
1  sur  20
By : Rabei Dogho
• Technical Diploma
in Computer
Engineering
techniques with
96.29 rate
• 2nd year Computer
and Automatic
Control Engineering
– Tishreen University
JAVA 8 Lambda Expression
Spring Workshop 2015 - Java 8 Lambda Expression1
Basic Concepts …
Contents:
Spring Workshop 2015 - Java 8 Lambda Expression2
 Preface ………………….…………….……….. 3
 What is a Lambda Expression ...................... 4
 Lambda Parameters ………………………… 5
 Lambda Body…………………………………. 6
 Lambda Expression Examples……………… 7
 Functional Interface ………………………… 11
 Functional interface in JAVA 8 …………… 13
 The Type of Lambda Expression ................. 15
 Lambda Expression Examples ( Runnable
Lambda , Listener Lambda ) ……………… 16
Preface …
Spring Workshop 2015 - Java 8 Lambda Expression3
‫العد‬ ‫في‬ ‫تستخدم‬ ‫و‬ ‫االسم‬ ‫مجهولة‬ ‫توابع‬ ‫عن‬ ‫عبارة‬ ‫هي‬ ‫الالمبدا‬ ‫تعابير‬‫من‬ ‫يد‬
‫ال‬ ‫مثل‬ ‫البرمجية‬ ‫اللغات‬{ C# , C++ , JavaScript , PHP , Ruby ,
VisualBasic.NET V9 }
‫ال‬ ‫إصدار‬ ‫مع‬ ‫الجافا‬ ‫في‬ ‫ممكنا‬ ‫استخدامها‬ ‫أصبح‬JAVA 8(JDK 8).
‫تستخدم‬‫أجل‬ ‫من‬ ‫شائع‬ ‫بشكل‬Functional Programming‫و‬‫من‬ ‫تورث‬
(Functional Interface)«‫الوظيفية‬ ‫الواجهات‬»‫فكرة‬ ‫شرح‬ ‫يتم‬ ‫سوف‬ ‫و‬
‫عنها‬ ‫مبسطة‬‫في‬ ‫بل‬ ‫أقصر‬ ‫أكواد‬ ‫كتابة‬ ‫في‬ ‫فقط‬ ‫ليس‬ ‫تساعدك‬ ‫التي‬‫إضفاء‬
‫التوابع‬ ‫و‬ ‫األغراض‬ ‫بتصميم‬ ‫التفكير‬ ‫في‬ ‫الوضوح‬ ‫من‬ ‫المزيد‬.
What is a Lambda Expression ?
Spring Workshop 2015 - Java 8 Lambda Expression4
‫ماهي‬Lambda Expression‫؟؟؟‬
‫طريقة‬ ‫هي‬Method‫وصول‬ ‫معرف‬ ‫دون‬ ‫من‬.
‫المعادة‬ ‫القيمة‬ ‫نمط‬ ‫تحديد‬ ‫دون‬ ‫من‬ ‫طريقة‬ ‫هي‬.
‫اسم‬ ‫دون‬ ‫من‬ ‫طريقة‬ ‫أنها‬ ‫كما‬.
•‫ال‬Lambda Expression‫ال‬ ‫قوة‬ ‫نقطة‬ ‫هي‬Anonymous Inner
Class‫يحل‬ ‫هذا‬ ‫و‬ ‫واحدة‬ ‫تعليمة‬ ‫إلى‬ ‫برمجية‬ ‫أسطر‬ ‫عدة‬ ‫بتحويل‬ ‫ذلك‬ ‫و‬
‫ال‬ ‫بسبب‬ ‫تواجهنا‬ ‫التي‬ ‫العمودية‬ ‫المشكلة‬Inner class‫بساطة‬ ‫أكثر‬ ‫أفقي‬ ‫بحل‬.
•‫ال‬Lambda Expression‫أجزاء‬ ‫ثالثة‬ ‫من‬ ‫تتألف‬:
‫الجسم‬‫السهم‬ ‫رمز‬‫الوسطاء‬ ‫الئحة‬
(int x , int y) -> x+y
Spring Workshop 2015 - Java 8 Lambda Expression5
‫الوسطاء‬:
o‫فاصلة‬ ‫بواسطة‬ ‫بينها‬ ‫يفصل‬ ‫و‬ ‫قوسين‬ ‫بين‬ ‫الوسطاء‬ ‫توضع‬.
o‫تستقبل‬ ‫أن‬ ‫يمكن‬Lambda Expression‫الوسطاء‬ ‫من‬ ‫عدد‬ ‫أي‬.
o‫ض‬ ‫من‬ ‫تلقائيا‬ ‫يستنتج‬ ‫أن‬ ‫أو‬ ‫بوضوح‬ ‫يصرح‬ ‫أن‬ ‫يمكن‬ ‫الوسطاء‬ ‫نمط‬‫من‬
‫البرمجي‬ ‫المقطع‬ ‫سياق‬.
o‫فار‬ ‫قوسين‬ ‫بواسطة‬ ‫ذلك‬ ‫يمكنك‬ ‫فارغة‬ ‫وسطاء‬ ‫الئحة‬ ‫تقديم‬ ‫أردت‬ ‫إذا‬‫غين‬.
o‫اس‬ ‫إلزاميا‬ ‫ليس‬ ‫السياق‬ ‫ضمن‬ ‫من‬ ‫يستنتج‬ ‫واحد‬ ‫وسيط‬ ‫نوع‬ ‫وجود‬ ‫عند‬‫تخدام‬
‫األقواس‬.
Lambda Parameters :
Spring Workshop 2015 - Java 8 Lambda Expression6
‫التعبير‬ ‫جسم‬:
o‫جسم‬Lambda Expression‫من‬ ‫عدد‬ ‫أي‬ ‫على‬ ‫يحتوي‬ ‫أن‬ ‫يمكن‬
‫التعليمات‬.
o‫الكتلة‬ ‫قوسا‬ ‫واحدة‬ ‫تعليمة‬ ‫هناك‬ ‫يكون‬ ‫عندما‬}{‫نمط‬ ‫و‬ ‫ضروريان‬ ‫غير‬
‫ال‬ ‫بواسطة‬ ‫المقدمة‬ ‫المجهولة‬ ‫للتوابع‬ ‫اإلعادة‬Lambda Expression‫هو‬
‫بإعادته‬ ‫التعبير‬ ‫جسم‬ ‫يقوم‬ ‫ما‬ ‫نفسه‬.
o‫النوع‬ ‫من‬ ‫أنه‬ ‫تلقائيا‬ ‫يستنتج‬ ‫شيئا‬ ‫التعبير‬ ‫يعيد‬ ‫ال‬ ‫عندما‬void.
obreak‫و‬continue‫التعب‬ ‫جسم‬ ‫في‬ ‫الحلقات‬ ‫ضمن‬ ‫االستخدام‬ ‫مسموحتا‬‫ير‬.
o‫تحكم‬ ‫مسار‬ ‫فكل‬ ‫قيمة‬ ‫يعيد‬ ‫الجسم‬ ‫كان‬ ‫إذا‬(‫الشرطية‬ ‫المسارات‬)‫يج‬‫أن‬ ‫ب‬
‫إستثناء‬ ‫يرمي‬ ‫أن‬ ‫أو‬ ‫ما‬ ‫قيمة‬ ‫يعيد‬(throw exception)
Lambda Body :
Lambda Expression Examples:
Spring Workshop 2015 - Java 8 Lambda Expression7
‫متفرقة‬ ‫أمثلة‬:
1) n -> n%2!=0
2) ( char c) -> c == y
3) ( x , y ) -> x + y
4) ( int a, int b) -> a*a + b*b
5) () -> 42
6) () -> { return 3.14}
7) ( String S) -> { System.out.println(s)};
8) () -> { System.out.println("Hello World! ")}
Lambda Expression Examples :
Spring Workshop 2015 - Java 8 Lambda Expression8
‫األمثلة‬ ‫شرح‬:
(1‫صحيح‬ ‫رقم‬ ‫التعبير‬ ‫يعطى‬ ‫المثال‬ ‫هذا‬ ‫في‬(n)‫إذا‬ ‫ما‬ ‫تحدد‬ ‫منطقية‬ ‫قيمة‬ ‫ويعيد‬
‫سالب‬ ‫كان‬.
(2‫محرف‬ ‫التعبير‬ ‫يعطى‬ ‫المثال‬ ‫هذا‬ ‫في‬(c)‫إذا‬ ‫ما‬ ‫تحدد‬ ‫منطقية‬ ‫قيمة‬ ‫يعيد‬ ‫و‬
‫ل‬ ‫مساو‬ ‫المحرف‬ ‫هذا‬ ‫كان‬“y”.
(3‫رقمين‬ ‫هنا‬ ‫التعبير‬ ‫يعطى‬(x,y)‫جمعهما‬ ‫ناتج‬ ‫هو‬ ‫آخر‬ ‫رقما‬ ‫يعيد‬ ‫و‬.
(4‫صحيحين‬ ‫عددين‬ ‫التعبير‬ ‫هذا‬ ‫بإعطاء‬(x,y)‫جمع‬ ‫ناتج‬ ‫هو‬ ‫آخر‬ ‫رقما‬ ‫يعيد‬
‫العددين‬ ‫مربعي‬(x,y).
(5‫الصحيح‬ ‫العدد‬ ‫يعيد‬ ‫و‬ ‫وسطاء‬ ‫أي‬ ‫يأخذ‬ ‫ال‬ ‫تعبير‬42.
(6‫المضاعف‬ ‫العدد‬ ‫يعيد‬ ‫و‬ ‫وسطاء‬ ‫أي‬ ‫يأخذ‬ ‫ال‬ ‫تعبير‬3.14.
Lambda Expression Examples :
Spring Workshop 2015 - Java 8 Lambda Expression9
‫األمثلة‬ ‫شرح‬:
(7‫محرفية‬ ‫سلسة‬ ‫التعبير‬ ‫هذا‬ ‫بإعطاء‬(S)
‫القياسي‬ ‫الخرج‬ ‫إلى‬ ‫السلسة‬ ‫هذه‬ ‫يطبع‬
‫من‬ ‫هو‬ ‫هنا‬ ‫التعبير‬ ‫إعادة‬ ‫نمط‬ ‫أن‬ ‫حيث‬
‫النوع‬(void).
(8‫يط‬ ‫وسيط‬ ‫أي‬ ‫التعبير‬ ‫هذا‬ ‫إعطاء‬ ‫بدون‬‫بع‬
‫عبارة‬“Hello World!”‫الخرج‬ ‫إلى‬
‫النوع‬ ‫من‬ ‫هو‬ ‫هنا‬ ‫اإلعادة‬ ‫نمط‬ ‫و‬ ‫القياسي‬
(void).
Lambda Expression
Spring Workshop 2015 - Java 8 Lambda Expression10
‫تعابي‬ ‫هي‬ ‫ما‬ ‫عرفنا‬ ‫أن‬ ‫بعد‬ ‫اآلن‬ ‫و‬‫ر‬
‫شر‬ ‫و‬ ‫صياغتها‬ ‫كيفية‬ ‫و‬ ‫الالمبدا‬‫حنا‬
‫سوف‬ ‫عنها‬ ‫المبسطة‬ ‫األمثلة‬ ‫بعض‬
‫أهمية‬ ‫عملي‬ ‫مثال‬ ‫خالل‬ ‫من‬ ‫نناقش‬
‫و‬ ‫البرنامج‬ ‫سياق‬ ‫ضمن‬ ‫استخدامها‬
‫الواجهات‬ ‫مع‬ ‫استخدامها‬ ‫آلية‬
‫الوظيفية‬Functional Interface
.‫نوضح‬ ‫سوف‬ ‫بذلك‬ ‫البدء‬ ‫وقبل‬
‫است‬ ‫مع‬ ‫المرتبطة‬ ‫المفاهيم‬ ‫بعض‬‫خدام‬
‫الالمبدا‬ ‫تعابير‬.
Functional Interface
Spring Workshop 2015 - Java 8 Lambda Expression11
‫ال‬Functional Interface‫واجهة‬ ‫عن‬ ‫عبارة‬ ‫هي‬ ‫الوظيفية‬ ‫الواجهات‬ ‫أو‬
Interface‫فقط‬ ‫واحدة‬ ‫مجردة‬ ‫طريقة‬ ‫تحوي‬.‫ب‬ ‫سابقا‬ ‫تعرف‬ ‫كانت‬ ‫و‬
SAM‫أي‬(Single Abstract Method. )
‫الـ‬ ‫قبل‬Java 8‫الفكرة‬ ‫هذه‬ ‫مع‬ ‫تتوافق‬ ‫التي‬ ‫الواجهات‬ ‫من‬ ‫العديد‬ ‫يوجد‬ ‫كان‬‫مثل‬
:
 public interface Comparator <T>{
int compare(T o1, T o2);
}
 public interface Callable <V>{
V call() throws Exception;
}
Functional Interface
Spring Workshop 2015 - Java 8 Lambda Expression12
 public interface ActionListener extends
EventListener {
public void actionPerformed( ActionEvent
e);
}
 public interface Runnable {
public void run();
}
Java 8 Functional Interface
Spring Workshop 2015 - Java 8 Lambda Expression13
 Java 8 Examples:
‫في‬ ‫عرفت‬ ‫الجديدة‬ ‫الوظيفية‬ ‫الواجهات‬ ‫من‬ ‫العديد‬Java 8‫أضيفت‬ ‫كما‬
‫العالمة‬@FunctionalInterface‫ننوي‬ ‫أننا‬ ‫على‬ ‫للداللة‬
‫عن‬ ‫األمثلة‬ ‫بعض‬ ‫هذه‬ ‫و‬ ، ‫وظيفية‬ ‫كواجهة‬ ‫التالية‬ ‫الواجهة‬ ‫عن‬ ‫التصريح‬
‫الحزمة‬ ‫ضمن‬ ‫موجودة‬ ‫هي‬ ‫التي‬ ‫و‬ ‫الجديدة‬ ‫الواجهات‬
java.util.function:
 public interface Predicate<T> {
boolean test(T t);
}
 public interface Function<T , R> {
R apply(T t);
}
Java 8 Functional Interface
Spring Workshop 2015 - Java 8 Lambda Expression14
 public interface Consumer<T> {
void accept(T t);
}
 public interface Supplier<T> {
T get();
}
 public interface BinaryOperator<T> {
T apply(T left, T right);
}
The Type of Lambda Expression
Spring Workshop 2015 - Java 8 Lambda Expression15
‫؟‬ ‫الالمبدا‬ ‫تعابير‬ ‫نمط‬ ‫ماهو‬
‫إلى‬ ‫يحددو‬ ‫أن‬ ‫يجب‬ ‫لذلك‬ ‫و‬ ، ‫كأغراض‬ ‫الالمبدا‬ ‫تعابير‬ ‫نقدم‬ ‫الجافا‬ ‫في‬‫نمط‬
‫الهدف‬ ‫نمط‬ ‫يسمى‬ ‫هذا‬ ‫و‬ ‫وظيفية‬ ‫واجهة‬ ‫ك‬ ‫معروف‬ ‫بيانات‬.
‫و‬ ‫مجردة‬ ‫طريقة‬ ‫على‬ ‫تحتوي‬ ‫أن‬ ‫فقط‬ ‫يمكنها‬ ‫الوظيفية‬ ‫الواجهات‬ ‫أن‬ ‫بما‬ ‫و‬‫احدة‬
‫تلك‬ ‫في‬ ‫الوسطاء‬ ‫يراسلو‬ ‫أن‬ ‫يجب‬ ‫الالمبدا‬ ‫تعبير‬ ‫وسطاء‬ ‫أنواع‬ ‫فإن‬ ،، ‫الطريقة‬
، ‫الطريقة‬ ‫تلك‬ ‫إعادة‬ ‫نمط‬ ‫يراسل‬ ‫أن‬ ‫يجب‬ ‫الالمبدا‬ ‫لتعبير‬ ‫اإلعادة‬ ‫نمط‬ ‫و‬‫أنه‬ ‫كما‬
‫مسموحا‬ ‫يكون‬ ‫أن‬ ‫يجب‬ ‫الالمبدا‬ ‫تعبير‬ ‫قبل‬ ‫من‬ ‫استثناء‬ ‫أي‬ ‫رمي‬‫بوسا‬‫طة‬
‫الصيغة‬(throws)‫الوظيفية‬ ‫الواجهة‬ ‫في‬ ‫الطريقة‬ ‫لتلك‬.
‫هد‬ ‫نمط‬ ‫إلى‬ ‫محددين‬ ‫المبدا‬ ‫لتعابير‬ ‫أمثلة‬ ‫عن‬ ‫عبارة‬ ‫هي‬ ‫التالية‬ ‫األمثلة‬‫ف‬:
Lambda Expression Examples
Spring Workshop 2015 - Java 8 Lambda Expression16
 Predicate<Integer> isOdd = n -> n % 2 != 0;
 BinaryOperator<Integer> sum = (x, y) -> x + y;
 Callable<Integer> callMe = () -> 42;
 Runnable runner= () -> {
System.out.println("Hello World!"); };
Lambda Expression Examples
Spring Workshop 2015 - Java 8 Lambda Expression17
‫الالمبدا‬ ‫تعابير‬ ‫استخدام‬ ‫من‬ ‫الفائدة‬ ‫نوضح‬ ‫سوف‬ ‫البسيط‬ ‫المثال‬ ‫هذا‬ ‫خالل‬ ‫من‬ ‫اآلن‬ ‫و‬:
package com.example.lambda;
public class RunnableTest {
public static void main(String[] args) {
System.out.println("=== RunnableTest ===");
// Anonymous Runnable
Runnable r1 = new Runnable(){
@Override public void run(){
System.out.println("Hello world one!");
}
};
Lambda Expression Examples
Spring Workshop 2015 - Java 8 Lambda Expression18
// Lambda Runnable
Runnable r2 = () -> {
System.out.println("Hello world two!");
};
// Run me!
r1.run();
r2.run();
}
}
‫ال‬ ‫تعريف‬ ‫بين‬ ‫الفرق‬ ‫الحظ‬r1‫ال‬ ‫و‬r2‫أس‬ ‫عدد‬ ‫تقليص‬ ‫في‬ ‫ساعدتنا‬ ‫الالمبدا‬ ‫تعابير‬ ‫أن‬ ‫كيف‬ ‫و‬‫طر‬
‫الوظيفية‬ ‫الواجهة‬ ‫اتطبيق‬ ‫الالزمة‬ ‫البرمجية‬ ‫الشيفرة‬Runnable.
Lambda Expression Examples
Spring Workshop 2015 - Java 8 Lambda Expression19
 Listener Lambda:
‫الخاصة‬ ‫األحداث‬ ‫معالجة‬ ‫عند‬ ‫الالمبدا‬ ‫تعابير‬ ‫أهمية‬ ‫يوضحان‬ ‫البرمجيين‬ ‫المقطعين‬ ‫هذين‬‫بتصميم‬
‫باستخدام‬ ‫الواجهات‬swing:
//Anonymous Action Listener:
testButton.addActionListener(new
ActionListener(){
public void actionPerformed(ActionEvent ae){
System.out.println("Click Detected by Anon
Class");
}
});
Lambda Expression Examples
Spring Workshop 2015 - Java 8 Lambda Expression20
// Lambdas Listener :
testButton.addActionListener(e -> {
System.out.println("Click Detected by Lambda
Listner");
});

Contenu connexe

Similaire à Java 8 lambda expression

برمجه حاسب1
برمجه حاسب1برمجه حاسب1
برمجه حاسب1jadalkinani1
 
1 first lesson -assemblies
1  first lesson -assemblies1  first lesson -assemblies
1 first lesson -assembliesMohammad Alyan
 
Project (function) ahmed almuwallad
Project (function) ahmed almuwalladProject (function) ahmed almuwallad
Project (function) ahmed almuwalladAhmed Dreezy
 
الدرس الثالث عشر
الدرس الثالث عشرالدرس الثالث عشر
الدرس الثالث عشرAnas Aloklah
 
التدريب على نموذج IFLA-LRM / ترجمة محمد عبد الحميد معوض
التدريب على نموذج  IFLA-LRM / ترجمة محمد عبد الحميد معوضالتدريب على نموذج  IFLA-LRM / ترجمة محمد عبد الحميد معوض
التدريب على نموذج IFLA-LRM / ترجمة محمد عبد الحميد معوضMuhammad Muawwad
 
الدرس الثاني عشر
الدرس الثاني عشرالدرس الثاني عشر
الدرس الثاني عشرAnas Aloklah
 
بالعربيةAngular js(ar)تحميل كتاب دورة لتعلم
بالعربيةAngular js(ar)تحميل كتاب دورة لتعلم بالعربيةAngular js(ar)تحميل كتاب دورة لتعلم
بالعربيةAngular js(ar)تحميل كتاب دورة لتعلم NoureddineHassi
 
C++ function (1) c++2
C++ function (1) c++2C++ function (1) c++2
C++ function (1) c++2MohammedDoos
 
الدرس الرابع عشر
الدرس الرابع عشرالدرس الرابع عشر
الدرس الرابع عشرAnas Aloklah
 
functional requirements and non functional requirements
functional requirements and non functional requirementsfunctional requirements and non functional requirements
functional requirements and non functional requirementsAliMohammad155
 
لا تكرر نفسك DRY (Don't Repeat yourself)
لا تكرر نفسك DRY (Don't Repeat yourself)لا تكرر نفسك DRY (Don't Repeat yourself)
لا تكرر نفسك DRY (Don't Repeat yourself)anees abu-hmaid
 
شرح مقرر البرمجة 2 لغة جافا - مادة النهائي
شرح مقرر البرمجة 2   لغة جافا - مادة النهائيشرح مقرر البرمجة 2   لغة جافا - مادة النهائي
شرح مقرر البرمجة 2 لغة جافا - مادة النهائيجامعة القدس المفتوحة
 
شرح مقرر البرمجة 2 "لغة جافا" - مادة النهائي
شرح مقرر البرمجة 2 "لغة جافا" - مادة النهائيشرح مقرر البرمجة 2 "لغة جافا" - مادة النهائي
شرح مقرر البرمجة 2 "لغة جافا" - مادة النهائيجامعة القدس المفتوحة
 
Required Programs To Start Developing in Laravel
Required Programs To Start Developing in LaravelRequired Programs To Start Developing in Laravel
Required Programs To Start Developing in LaravelAliSuliman33
 
Mathematical Operation & Expression and Assignment Statements
Mathematical Operation & Expression and Assignment StatementsMathematical Operation & Expression and Assignment Statements
Mathematical Operation & Expression and Assignment StatementsMuhammad Hassan
 

Similaire à Java 8 lambda expression (20)

برمجه حاسب1
برمجه حاسب1برمجه حاسب1
برمجه حاسب1
 
1 first lesson -assemblies
1  first lesson -assemblies1  first lesson -assemblies
1 first lesson -assemblies
 
Project (function) ahmed almuwallad
Project (function) ahmed almuwalladProject (function) ahmed almuwallad
Project (function) ahmed almuwallad
 
الدرس الثالث عشر
الدرس الثالث عشرالدرس الثالث عشر
الدرس الثالث عشر
 
التدريب على نموذج IFLA-LRM / ترجمة محمد عبد الحميد معوض
التدريب على نموذج  IFLA-LRM / ترجمة محمد عبد الحميد معوضالتدريب على نموذج  IFLA-LRM / ترجمة محمد عبد الحميد معوض
التدريب على نموذج IFLA-LRM / ترجمة محمد عبد الحميد معوض
 
7 functions
7 functions7 functions
7 functions
 
الدرس الثاني عشر
الدرس الثاني عشرالدرس الثاني عشر
الدرس الثاني عشر
 
1- Languages Basics
1- Languages Basics1- Languages Basics
1- Languages Basics
 
Angular js دورة
Angular js دورةAngular js دورة
Angular js دورة
 
بالعربيةAngular js(ar)تحميل كتاب دورة لتعلم
بالعربيةAngular js(ar)تحميل كتاب دورة لتعلم بالعربيةAngular js(ar)تحميل كتاب دورة لتعلم
بالعربيةAngular js(ar)تحميل كتاب دورة لتعلم
 
C++ function (1) c++2
C++ function (1) c++2C++ function (1) c++2
C++ function (1) c++2
 
الدرس الرابع عشر
الدرس الرابع عشرالدرس الرابع عشر
الدرس الرابع عشر
 
functional requirements and non functional requirements
functional requirements and non functional requirementsfunctional requirements and non functional requirements
functional requirements and non functional requirements
 
البرمجة
البرمجةالبرمجة
البرمجة
 
9 networking
9 networking9 networking
9 networking
 
لا تكرر نفسك DRY (Don't Repeat yourself)
لا تكرر نفسك DRY (Don't Repeat yourself)لا تكرر نفسك DRY (Don't Repeat yourself)
لا تكرر نفسك DRY (Don't Repeat yourself)
 
شرح مقرر البرمجة 2 لغة جافا - مادة النهائي
شرح مقرر البرمجة 2   لغة جافا - مادة النهائيشرح مقرر البرمجة 2   لغة جافا - مادة النهائي
شرح مقرر البرمجة 2 لغة جافا - مادة النهائي
 
شرح مقرر البرمجة 2 "لغة جافا" - مادة النهائي
شرح مقرر البرمجة 2 "لغة جافا" - مادة النهائيشرح مقرر البرمجة 2 "لغة جافا" - مادة النهائي
شرح مقرر البرمجة 2 "لغة جافا" - مادة النهائي
 
Required Programs To Start Developing in Laravel
Required Programs To Start Developing in LaravelRequired Programs To Start Developing in Laravel
Required Programs To Start Developing in Laravel
 
Mathematical Operation & Expression and Assignment Statements
Mathematical Operation & Expression and Assignment StatementsMathematical Operation & Expression and Assignment Statements
Mathematical Operation & Expression and Assignment Statements
 

Java 8 lambda expression

  • 1. By : Rabei Dogho • Technical Diploma in Computer Engineering techniques with 96.29 rate • 2nd year Computer and Automatic Control Engineering – Tishreen University JAVA 8 Lambda Expression Spring Workshop 2015 - Java 8 Lambda Expression1 Basic Concepts …
  • 2. Contents: Spring Workshop 2015 - Java 8 Lambda Expression2  Preface ………………….…………….……….. 3  What is a Lambda Expression ...................... 4  Lambda Parameters ………………………… 5  Lambda Body…………………………………. 6  Lambda Expression Examples……………… 7  Functional Interface ………………………… 11  Functional interface in JAVA 8 …………… 13  The Type of Lambda Expression ................. 15  Lambda Expression Examples ( Runnable Lambda , Listener Lambda ) ……………… 16
  • 3. Preface … Spring Workshop 2015 - Java 8 Lambda Expression3 ‫العد‬ ‫في‬ ‫تستخدم‬ ‫و‬ ‫االسم‬ ‫مجهولة‬ ‫توابع‬ ‫عن‬ ‫عبارة‬ ‫هي‬ ‫الالمبدا‬ ‫تعابير‬‫من‬ ‫يد‬ ‫ال‬ ‫مثل‬ ‫البرمجية‬ ‫اللغات‬{ C# , C++ , JavaScript , PHP , Ruby , VisualBasic.NET V9 } ‫ال‬ ‫إصدار‬ ‫مع‬ ‫الجافا‬ ‫في‬ ‫ممكنا‬ ‫استخدامها‬ ‫أصبح‬JAVA 8(JDK 8). ‫تستخدم‬‫أجل‬ ‫من‬ ‫شائع‬ ‫بشكل‬Functional Programming‫و‬‫من‬ ‫تورث‬ (Functional Interface)«‫الوظيفية‬ ‫الواجهات‬»‫فكرة‬ ‫شرح‬ ‫يتم‬ ‫سوف‬ ‫و‬ ‫عنها‬ ‫مبسطة‬‫في‬ ‫بل‬ ‫أقصر‬ ‫أكواد‬ ‫كتابة‬ ‫في‬ ‫فقط‬ ‫ليس‬ ‫تساعدك‬ ‫التي‬‫إضفاء‬ ‫التوابع‬ ‫و‬ ‫األغراض‬ ‫بتصميم‬ ‫التفكير‬ ‫في‬ ‫الوضوح‬ ‫من‬ ‫المزيد‬.
  • 4. What is a Lambda Expression ? Spring Workshop 2015 - Java 8 Lambda Expression4 ‫ماهي‬Lambda Expression‫؟؟؟‬ ‫طريقة‬ ‫هي‬Method‫وصول‬ ‫معرف‬ ‫دون‬ ‫من‬. ‫المعادة‬ ‫القيمة‬ ‫نمط‬ ‫تحديد‬ ‫دون‬ ‫من‬ ‫طريقة‬ ‫هي‬. ‫اسم‬ ‫دون‬ ‫من‬ ‫طريقة‬ ‫أنها‬ ‫كما‬. •‫ال‬Lambda Expression‫ال‬ ‫قوة‬ ‫نقطة‬ ‫هي‬Anonymous Inner Class‫يحل‬ ‫هذا‬ ‫و‬ ‫واحدة‬ ‫تعليمة‬ ‫إلى‬ ‫برمجية‬ ‫أسطر‬ ‫عدة‬ ‫بتحويل‬ ‫ذلك‬ ‫و‬ ‫ال‬ ‫بسبب‬ ‫تواجهنا‬ ‫التي‬ ‫العمودية‬ ‫المشكلة‬Inner class‫بساطة‬ ‫أكثر‬ ‫أفقي‬ ‫بحل‬. •‫ال‬Lambda Expression‫أجزاء‬ ‫ثالثة‬ ‫من‬ ‫تتألف‬: ‫الجسم‬‫السهم‬ ‫رمز‬‫الوسطاء‬ ‫الئحة‬ (int x , int y) -> x+y
  • 5. Spring Workshop 2015 - Java 8 Lambda Expression5 ‫الوسطاء‬: o‫فاصلة‬ ‫بواسطة‬ ‫بينها‬ ‫يفصل‬ ‫و‬ ‫قوسين‬ ‫بين‬ ‫الوسطاء‬ ‫توضع‬. o‫تستقبل‬ ‫أن‬ ‫يمكن‬Lambda Expression‫الوسطاء‬ ‫من‬ ‫عدد‬ ‫أي‬. o‫ض‬ ‫من‬ ‫تلقائيا‬ ‫يستنتج‬ ‫أن‬ ‫أو‬ ‫بوضوح‬ ‫يصرح‬ ‫أن‬ ‫يمكن‬ ‫الوسطاء‬ ‫نمط‬‫من‬ ‫البرمجي‬ ‫المقطع‬ ‫سياق‬. o‫فار‬ ‫قوسين‬ ‫بواسطة‬ ‫ذلك‬ ‫يمكنك‬ ‫فارغة‬ ‫وسطاء‬ ‫الئحة‬ ‫تقديم‬ ‫أردت‬ ‫إذا‬‫غين‬. o‫اس‬ ‫إلزاميا‬ ‫ليس‬ ‫السياق‬ ‫ضمن‬ ‫من‬ ‫يستنتج‬ ‫واحد‬ ‫وسيط‬ ‫نوع‬ ‫وجود‬ ‫عند‬‫تخدام‬ ‫األقواس‬. Lambda Parameters :
  • 6. Spring Workshop 2015 - Java 8 Lambda Expression6 ‫التعبير‬ ‫جسم‬: o‫جسم‬Lambda Expression‫من‬ ‫عدد‬ ‫أي‬ ‫على‬ ‫يحتوي‬ ‫أن‬ ‫يمكن‬ ‫التعليمات‬. o‫الكتلة‬ ‫قوسا‬ ‫واحدة‬ ‫تعليمة‬ ‫هناك‬ ‫يكون‬ ‫عندما‬}{‫نمط‬ ‫و‬ ‫ضروريان‬ ‫غير‬ ‫ال‬ ‫بواسطة‬ ‫المقدمة‬ ‫المجهولة‬ ‫للتوابع‬ ‫اإلعادة‬Lambda Expression‫هو‬ ‫بإعادته‬ ‫التعبير‬ ‫جسم‬ ‫يقوم‬ ‫ما‬ ‫نفسه‬. o‫النوع‬ ‫من‬ ‫أنه‬ ‫تلقائيا‬ ‫يستنتج‬ ‫شيئا‬ ‫التعبير‬ ‫يعيد‬ ‫ال‬ ‫عندما‬void. obreak‫و‬continue‫التعب‬ ‫جسم‬ ‫في‬ ‫الحلقات‬ ‫ضمن‬ ‫االستخدام‬ ‫مسموحتا‬‫ير‬. o‫تحكم‬ ‫مسار‬ ‫فكل‬ ‫قيمة‬ ‫يعيد‬ ‫الجسم‬ ‫كان‬ ‫إذا‬(‫الشرطية‬ ‫المسارات‬)‫يج‬‫أن‬ ‫ب‬ ‫إستثناء‬ ‫يرمي‬ ‫أن‬ ‫أو‬ ‫ما‬ ‫قيمة‬ ‫يعيد‬(throw exception) Lambda Body :
  • 7. Lambda Expression Examples: Spring Workshop 2015 - Java 8 Lambda Expression7 ‫متفرقة‬ ‫أمثلة‬: 1) n -> n%2!=0 2) ( char c) -> c == y 3) ( x , y ) -> x + y 4) ( int a, int b) -> a*a + b*b 5) () -> 42 6) () -> { return 3.14} 7) ( String S) -> { System.out.println(s)}; 8) () -> { System.out.println("Hello World! ")}
  • 8. Lambda Expression Examples : Spring Workshop 2015 - Java 8 Lambda Expression8 ‫األمثلة‬ ‫شرح‬: (1‫صحيح‬ ‫رقم‬ ‫التعبير‬ ‫يعطى‬ ‫المثال‬ ‫هذا‬ ‫في‬(n)‫إذا‬ ‫ما‬ ‫تحدد‬ ‫منطقية‬ ‫قيمة‬ ‫ويعيد‬ ‫سالب‬ ‫كان‬. (2‫محرف‬ ‫التعبير‬ ‫يعطى‬ ‫المثال‬ ‫هذا‬ ‫في‬(c)‫إذا‬ ‫ما‬ ‫تحدد‬ ‫منطقية‬ ‫قيمة‬ ‫يعيد‬ ‫و‬ ‫ل‬ ‫مساو‬ ‫المحرف‬ ‫هذا‬ ‫كان‬“y”. (3‫رقمين‬ ‫هنا‬ ‫التعبير‬ ‫يعطى‬(x,y)‫جمعهما‬ ‫ناتج‬ ‫هو‬ ‫آخر‬ ‫رقما‬ ‫يعيد‬ ‫و‬. (4‫صحيحين‬ ‫عددين‬ ‫التعبير‬ ‫هذا‬ ‫بإعطاء‬(x,y)‫جمع‬ ‫ناتج‬ ‫هو‬ ‫آخر‬ ‫رقما‬ ‫يعيد‬ ‫العددين‬ ‫مربعي‬(x,y). (5‫الصحيح‬ ‫العدد‬ ‫يعيد‬ ‫و‬ ‫وسطاء‬ ‫أي‬ ‫يأخذ‬ ‫ال‬ ‫تعبير‬42. (6‫المضاعف‬ ‫العدد‬ ‫يعيد‬ ‫و‬ ‫وسطاء‬ ‫أي‬ ‫يأخذ‬ ‫ال‬ ‫تعبير‬3.14.
  • 9. Lambda Expression Examples : Spring Workshop 2015 - Java 8 Lambda Expression9 ‫األمثلة‬ ‫شرح‬: (7‫محرفية‬ ‫سلسة‬ ‫التعبير‬ ‫هذا‬ ‫بإعطاء‬(S) ‫القياسي‬ ‫الخرج‬ ‫إلى‬ ‫السلسة‬ ‫هذه‬ ‫يطبع‬ ‫من‬ ‫هو‬ ‫هنا‬ ‫التعبير‬ ‫إعادة‬ ‫نمط‬ ‫أن‬ ‫حيث‬ ‫النوع‬(void). (8‫يط‬ ‫وسيط‬ ‫أي‬ ‫التعبير‬ ‫هذا‬ ‫إعطاء‬ ‫بدون‬‫بع‬ ‫عبارة‬“Hello World!”‫الخرج‬ ‫إلى‬ ‫النوع‬ ‫من‬ ‫هو‬ ‫هنا‬ ‫اإلعادة‬ ‫نمط‬ ‫و‬ ‫القياسي‬ (void).
  • 10. Lambda Expression Spring Workshop 2015 - Java 8 Lambda Expression10 ‫تعابي‬ ‫هي‬ ‫ما‬ ‫عرفنا‬ ‫أن‬ ‫بعد‬ ‫اآلن‬ ‫و‬‫ر‬ ‫شر‬ ‫و‬ ‫صياغتها‬ ‫كيفية‬ ‫و‬ ‫الالمبدا‬‫حنا‬ ‫سوف‬ ‫عنها‬ ‫المبسطة‬ ‫األمثلة‬ ‫بعض‬ ‫أهمية‬ ‫عملي‬ ‫مثال‬ ‫خالل‬ ‫من‬ ‫نناقش‬ ‫و‬ ‫البرنامج‬ ‫سياق‬ ‫ضمن‬ ‫استخدامها‬ ‫الواجهات‬ ‫مع‬ ‫استخدامها‬ ‫آلية‬ ‫الوظيفية‬Functional Interface .‫نوضح‬ ‫سوف‬ ‫بذلك‬ ‫البدء‬ ‫وقبل‬ ‫است‬ ‫مع‬ ‫المرتبطة‬ ‫المفاهيم‬ ‫بعض‬‫خدام‬ ‫الالمبدا‬ ‫تعابير‬.
  • 11. Functional Interface Spring Workshop 2015 - Java 8 Lambda Expression11 ‫ال‬Functional Interface‫واجهة‬ ‫عن‬ ‫عبارة‬ ‫هي‬ ‫الوظيفية‬ ‫الواجهات‬ ‫أو‬ Interface‫فقط‬ ‫واحدة‬ ‫مجردة‬ ‫طريقة‬ ‫تحوي‬.‫ب‬ ‫سابقا‬ ‫تعرف‬ ‫كانت‬ ‫و‬ SAM‫أي‬(Single Abstract Method. ) ‫الـ‬ ‫قبل‬Java 8‫الفكرة‬ ‫هذه‬ ‫مع‬ ‫تتوافق‬ ‫التي‬ ‫الواجهات‬ ‫من‬ ‫العديد‬ ‫يوجد‬ ‫كان‬‫مثل‬ :  public interface Comparator <T>{ int compare(T o1, T o2); }  public interface Callable <V>{ V call() throws Exception; }
  • 12. Functional Interface Spring Workshop 2015 - Java 8 Lambda Expression12  public interface ActionListener extends EventListener { public void actionPerformed( ActionEvent e); }  public interface Runnable { public void run(); }
  • 13. Java 8 Functional Interface Spring Workshop 2015 - Java 8 Lambda Expression13  Java 8 Examples: ‫في‬ ‫عرفت‬ ‫الجديدة‬ ‫الوظيفية‬ ‫الواجهات‬ ‫من‬ ‫العديد‬Java 8‫أضيفت‬ ‫كما‬ ‫العالمة‬@FunctionalInterface‫ننوي‬ ‫أننا‬ ‫على‬ ‫للداللة‬ ‫عن‬ ‫األمثلة‬ ‫بعض‬ ‫هذه‬ ‫و‬ ، ‫وظيفية‬ ‫كواجهة‬ ‫التالية‬ ‫الواجهة‬ ‫عن‬ ‫التصريح‬ ‫الحزمة‬ ‫ضمن‬ ‫موجودة‬ ‫هي‬ ‫التي‬ ‫و‬ ‫الجديدة‬ ‫الواجهات‬ java.util.function:  public interface Predicate<T> { boolean test(T t); }  public interface Function<T , R> { R apply(T t); }
  • 14. Java 8 Functional Interface Spring Workshop 2015 - Java 8 Lambda Expression14  public interface Consumer<T> { void accept(T t); }  public interface Supplier<T> { T get(); }  public interface BinaryOperator<T> { T apply(T left, T right); }
  • 15. The Type of Lambda Expression Spring Workshop 2015 - Java 8 Lambda Expression15 ‫؟‬ ‫الالمبدا‬ ‫تعابير‬ ‫نمط‬ ‫ماهو‬ ‫إلى‬ ‫يحددو‬ ‫أن‬ ‫يجب‬ ‫لذلك‬ ‫و‬ ، ‫كأغراض‬ ‫الالمبدا‬ ‫تعابير‬ ‫نقدم‬ ‫الجافا‬ ‫في‬‫نمط‬ ‫الهدف‬ ‫نمط‬ ‫يسمى‬ ‫هذا‬ ‫و‬ ‫وظيفية‬ ‫واجهة‬ ‫ك‬ ‫معروف‬ ‫بيانات‬. ‫و‬ ‫مجردة‬ ‫طريقة‬ ‫على‬ ‫تحتوي‬ ‫أن‬ ‫فقط‬ ‫يمكنها‬ ‫الوظيفية‬ ‫الواجهات‬ ‫أن‬ ‫بما‬ ‫و‬‫احدة‬ ‫تلك‬ ‫في‬ ‫الوسطاء‬ ‫يراسلو‬ ‫أن‬ ‫يجب‬ ‫الالمبدا‬ ‫تعبير‬ ‫وسطاء‬ ‫أنواع‬ ‫فإن‬ ،، ‫الطريقة‬ ، ‫الطريقة‬ ‫تلك‬ ‫إعادة‬ ‫نمط‬ ‫يراسل‬ ‫أن‬ ‫يجب‬ ‫الالمبدا‬ ‫لتعبير‬ ‫اإلعادة‬ ‫نمط‬ ‫و‬‫أنه‬ ‫كما‬ ‫مسموحا‬ ‫يكون‬ ‫أن‬ ‫يجب‬ ‫الالمبدا‬ ‫تعبير‬ ‫قبل‬ ‫من‬ ‫استثناء‬ ‫أي‬ ‫رمي‬‫بوسا‬‫طة‬ ‫الصيغة‬(throws)‫الوظيفية‬ ‫الواجهة‬ ‫في‬ ‫الطريقة‬ ‫لتلك‬. ‫هد‬ ‫نمط‬ ‫إلى‬ ‫محددين‬ ‫المبدا‬ ‫لتعابير‬ ‫أمثلة‬ ‫عن‬ ‫عبارة‬ ‫هي‬ ‫التالية‬ ‫األمثلة‬‫ف‬:
  • 16. Lambda Expression Examples Spring Workshop 2015 - Java 8 Lambda Expression16  Predicate<Integer> isOdd = n -> n % 2 != 0;  BinaryOperator<Integer> sum = (x, y) -> x + y;  Callable<Integer> callMe = () -> 42;  Runnable runner= () -> { System.out.println("Hello World!"); };
  • 17. Lambda Expression Examples Spring Workshop 2015 - Java 8 Lambda Expression17 ‫الالمبدا‬ ‫تعابير‬ ‫استخدام‬ ‫من‬ ‫الفائدة‬ ‫نوضح‬ ‫سوف‬ ‫البسيط‬ ‫المثال‬ ‫هذا‬ ‫خالل‬ ‫من‬ ‫اآلن‬ ‫و‬: package com.example.lambda; public class RunnableTest { public static void main(String[] args) { System.out.println("=== RunnableTest ==="); // Anonymous Runnable Runnable r1 = new Runnable(){ @Override public void run(){ System.out.println("Hello world one!"); } };
  • 18. Lambda Expression Examples Spring Workshop 2015 - Java 8 Lambda Expression18 // Lambda Runnable Runnable r2 = () -> { System.out.println("Hello world two!"); }; // Run me! r1.run(); r2.run(); } } ‫ال‬ ‫تعريف‬ ‫بين‬ ‫الفرق‬ ‫الحظ‬r1‫ال‬ ‫و‬r2‫أس‬ ‫عدد‬ ‫تقليص‬ ‫في‬ ‫ساعدتنا‬ ‫الالمبدا‬ ‫تعابير‬ ‫أن‬ ‫كيف‬ ‫و‬‫طر‬ ‫الوظيفية‬ ‫الواجهة‬ ‫اتطبيق‬ ‫الالزمة‬ ‫البرمجية‬ ‫الشيفرة‬Runnable.
  • 19. Lambda Expression Examples Spring Workshop 2015 - Java 8 Lambda Expression19  Listener Lambda: ‫الخاصة‬ ‫األحداث‬ ‫معالجة‬ ‫عند‬ ‫الالمبدا‬ ‫تعابير‬ ‫أهمية‬ ‫يوضحان‬ ‫البرمجيين‬ ‫المقطعين‬ ‫هذين‬‫بتصميم‬ ‫باستخدام‬ ‫الواجهات‬swing: //Anonymous Action Listener: testButton.addActionListener(new ActionListener(){ public void actionPerformed(ActionEvent ae){ System.out.println("Click Detected by Anon Class"); } });
  • 20. Lambda Expression Examples Spring Workshop 2015 - Java 8 Lambda Expression20 // Lambdas Listener : testButton.addActionListener(e -> { System.out.println("Click Detected by Lambda Listner"); });