تیکه پاره های جاوا
526 subscribers
93 photos
24 videos
7 files
58 links
سلام خوش اومدید. اینجا یادداشت ها و تکه های جاوا رو کنار هم قرار میدیم :) مطالب کاملا اختصاصی و دستنویس هستند. کپی فقط با ذکر منبع و آیدی کانال❤️

📝برای تدریس پیام دهید
محمدرضا عظیمی‌فرد
🆔 @mrvj475
Download Telegram
💎 یک متد با چند خروجی همزمان در جاوا

🔴 سوال: آیا متد میتونه همزمان چند مقدار رو ریترن کنه؟
🟢 جواب: هم آره و هم نه!

🔆 در واقع بصورت عادی یک متد فقط میتونه یک چیز رو ریترن کنه. پس نمیشه انتظار چند خروجی همزمان رو داشت
اما میشه داده رو یجورایی در قالب یه بسته خروجی داد که البته در زیر انواع روش ها رو برای این کار توضیح میدم:

🔅 استفاده از آرایه:
متدتون میتونه خروجی با استفاده از آرایه داشته باشه. مثلا فرض کنید یه متد دارین که مختصات پیش فرض رو برمیگردونه:
double[] defaultCoordinate(){
double[] co = new double[2];
co[0] = 2.0;
co[1] = 4.6;
return co;
}
🔅 استفاده از کلاس Pair:
کلاس Pair کلاسیه که فقط دو مقدار میتونه نگهداری کنه و ضمنا مقادیری که درش ذخیره میشه دیگه قابل تغییر نیست و فقط قابل دسترسیه. یعنی نمونه های این کلاس Immutable 🔗 هستن:
Pair<String,Double> studentInfo = new Pair<>("MohammadReza",14.5);
در نتیجه میشه خروجی یک متد رو یک نمونه از کلاس Pair گذاشت:
Pair stInfo(String name,double grade){
Pair<String,Double> studentInfo = new Pair<>(name,grade);
return studentInfo;
}

🔅 استفاده از کلاس های کتابخانه Tuple:
اگه بیشتر از 2 داده برای خروجی داشته باشید، میتونید از کلاس های کتابخونه Tuple استفاده کنید(کارکردشون دقیقا مشابه کلاس Pair اما برای ذخیره بیشتر از 2 داده):
For 1 element - Unit<A>
For 2 elements - Pair<A, B>
For 3 elements - Triplet<A, B, C>
For 4 elements - Quartet<A, B, C, D>
For 5 elements - Quintet<A, B, C, D, E>
For 6 elements - Sextet<A, B, C, D, E, F>
For 7 elements - Septet<A, B, C, D, E, F, G>
For 8 elements - Octet<A, B, C, D, E, F, G, H>
For 9 elements - Ennead<A, B, C, D, E, F, G, H, I>
For 10 elements - Decade<A, B, C, D, E, F, G, H, I, J>


🔅 کلاس خودتون رو تعریف کنید:
میتونید کلاس خودتون رو تعریف کنید و به تعدادی که میخواید براش فیلد تعریف کنید. در نهایت وقتی میخواید متدتون خروجی داشته باشه، نوع خروجی متدتون رو نمونه ای از کلاس تعریف شده قرار میدین. مثلا:
class Coordinate{
int x,y,z;
coordinate(int x,int y, int z){
this.x = x;
this.y = y;
this.z = z;
}
}
و حالا متدی که تعریف میکنیم:
Coordinate position(int x,int y, int z){
return new Coordinate(x,y,z);
}
که در واقع سه داده ورودی رو در قالب یک داده (از کلاس Coordinate) خروجی میده.

حرف آخر اینکه علاوه بر روش هایی که بالا تعریف کردیم، بازم میشه جور دیگه خروجی رو داد. مثلا میتونید از List یا Map هم استفاده کنید :)
———
#methods #return #tuple #pair
تیکه پاره های جاوا
@PieceJava
👍10
💎 معرفی وبسایت پرکاربرد openbase

وبسایت openbase.com یکی از پرکاربرد ترین مراجع آنلاین تو انتخاب پکیج مناسب برای انجام فعالیتی خاص محسوب میشه.
⁉️ فرض کنید قصد دارید یک پکیج برای راه اندازی Date Picker نصب کنید و از طرفی، میخواید بدونید که محبوب ترین پکیج برای این کار چیه؟!

🔆 برای همین وارد این وبسایت میشید، از قسمت سرچ اسم Date Picker رو مینویسید، سمت راست فیلد سرچ، زبان مورد نظرتون رو انتخاب و سرچ رو انجام میدید. این وبسایت 10 تا از محبوب ترین پکیج ها رو از نظر تعداد نصب و بازخورد کاربران رو براتون نمایش میده و به سادگی میتونید بهترین پکیج رو برای هر کاری پیدا کنید.

💬 زبان های پشتیبانی شده : Javascript, Swift, Python, Java, Go, Rust
#مثبت_برنامه_نویس #معرفی_وبسایت

🌐 @pieceJS
10👍2
This media is not supported in your browser
VIEW IN TELEGRAM
#مثبت_برنامه_نویس
🌀 به بهانه روز جهانی فیبوناچی
پیشنهاد میکنم این سه دقیقه رو کامل و با دقت ببینید و کیف کنید :)

💬 توی تمرینات مبانی هم خیلی پر کاربرد بود... 😁
@PieceJava
👍13
🟡 فانکشنال اینترفیس و عبارت لامبدا
🕦زمان مطالعه:
2 دقیقه
#lambda #FunctionalInterface
〽️ @PieceJava
5👍1
تیکه پاره های جاوا
🟡 فانکشنال اینترفیس و عبارت لامبدا 🕦زمان مطالعه: 2 دقیقه #lambda #FunctionalInterface 〽️ @PieceJava
💠 فانکشنال اینترفیس و بررسی عبارات لامبدا

🔆 فانکشنال اینترفیس در واقع به اینترفیسی گفته میشود که تنها یک متد ابسترکت را داشته باشد (Single Abstract Method) هر چند که همچنان میتواند دارای متد های استاتیک و دیفالت باشد. برای نشانه گذاری اینترفیس فانکشنال، از انوتیشن @FunctionalInterface استفاده میشود. در واقع نشانه گذاری اینترفیس بعنوان فانکشنال، از نوشتن متد های ابسترکت اضافه جلوگیری میکند (اگه متد ابسترکت جدید اضافه کنین، کمپایلر بهتون یادآوری میکنه)

🔅 یکی از دلایل اهمیت فانکشنال اینترفیس، به برنامه نویس امکان استفاده از عبارات لامبدا را میدهد بدون اینکه نیاز باشد کلاسی را بصورت بی نام (Anonymous) و فقط جهت استفاده از اینترفیس تعریف کند.
نمونه ای از تعریف کلاس Anonymous در متد مین با پیاده سازی اینترفیس فانکشنال IPrinter:
public class Main {
public static void main(String[] args) {
IPrinter printer = new IPrinter() {
@Override
public void print(String str) {
System.out.println(str);
}
};
printer.print("Hello World");
}
}
@FunctionalInterface
interface IPrinter{
void print(String str);
}

⁉️ عبارت لامبدا چیست؟
عبارت لامبدا صرفا متدی است بدون اسم و نشان که از سه بخش تشکیل شده است. بخش آرگومان های ورودی و بخش بدنه متد و همچنین یک عملگر -> که ارتباط بین آرگومان های ورودی و بدنه را نشان میدهد:
(arguments)-> {body}

در واقع در پشت هر عبارت لامبدا، یک فانکشنال اینترفیس قرار گرفته است. به اینصورت که ارگومان های ورودی همان ورودی های تک متد ابسترکت و بدنه نیز همان بدنه تک متد آبسترکت میباشد تنها با این تفاوت که لزومی به نوشتن اسم متد نیست. برای مثال بجای نوشتن کلاس انانیموس بالا میتوان فقط بصورت زیر عمل کرد:
IPrinter printer =(String str) -> System.out.println(str);
printer.print("Hello World");
حتی ازین مختصر تر هم میتوان نوشت. از آنجا که کمپایلر متوجه نوع ورودی متد میباشد، میتوانید از نوشتن نوع پارامتر ورودی نیز صرف نظر کنید:
IPrinter printer =(str) -> System.out.println(str);
printer.print("Hello World");

🔰 مثال 2:
فرض کنید یک اینترفیس فانکشنال بصورت زیر داریم که وظیفه تبدیل رشته به عدد را بر عهده دارد:
@FunctionalInterface
interface IConverter<T>{
T Converter(String input);
}
در اینجا T به معنای خروجی متد از هر نوعی است. یعنی به جای T میتوانیم هر نوع داده ای قرار دهیم. برای مثال اگر T معادل Integer باشد، یعنی خروجی متد ما در اینترفیس یک Integer خواهد بود (بجای T حتما باید یک نوع داده مرجع قرار گیرد. مثلا Integer,Double,String, Object... )
با توجه به تعریفی که از عبارت لامبدا کردیم، میتوانیم IConverter را بصورت زیر پیاده سازی کنیم:
IConverter<Integer> toInteger = (str) -> Integer.parseInt(str);
System.out.println(toInteger.convert("1234") + 1); // OUTPUT = 1235

————
〽️ @PIECEJAVA
👍84
💠 کلاس های تو در تو در جاوا
🕗زمان مطالعه:
1:30 دقیقه

🔆 یکی از ویژگی های زبان جاوا، تعریف کلاس ها بصورت تو در تو میباشد. در واقع این قابلیت به شما اجازه میدهد که کلاس های مرتبط به هم را دسته بندی کنید. یا به عبارتی کلاس هایی که فقط در کنار هم استفاده میشوند و استفاده خارجی ندارند (مثلا تعریف کلاس Node داخل کلاس LinkedList). این کار در واقع علاوه بر افزایش کارآمدی کد، به خوانایی کد نیز کمک میکند.

🔅 مزایای استفاده از کلاس های تو در تو:
- کلاس داخلی به اعضای کلاس خارجی نیز دسترسی دارد.
- کلاس داخلی میتواند پرایوت یا حتی استاتیک تعریف شود
- کلاس داخلی خود به گونه ای عضوی از کلاس خارجی است. پس بدون ایجاد نمونه از کلاس خارجی، نمیتوان به آن دست پیدا کرد:
class OuterClass
{
...
class NestedClass
{
...
}
}

🟡 برای نمونه سازی از کلاس داخلی، کافیست اول از کلاس خارجی نمونه ای ایجاد کنید:
OuterClass outer = new OuterClass();
و حالا از طریق نمونه outer اقدام به ایجاد نمونه از کلاس داخلی کنید:
OuterClass.InnerClass inner = o. new InnerClass();
همانطور که پیش تر اشاره کردیم، کلاس داخلی کاملا به کلاس خارجی متصل است. پس بدون ایجاد از نمونه خارجی نمیتوانید از کلاس داخلی هم نمونه ای ایجاد کنید.

🟡 اما درصورتی که کلاس داخلی استاتیک باشد، بدون اینکه نیاز به ساختن نمونه از کلاس خارجی باشد، میتوانید از کلاس داخلی نمونه خود را ایجاد کنید:
OuterClass.InnerClass staticInner = new OuterClass.InnerClass();

🔺 ضمنا کلاس استاتیک به راحتی به اعضای استاتیک کلاس خارجی دسترسی دارد اما برای دسترسی به باقی اعضا، حتما باید از کلاس خارجی در این کلاس یک نمونه ایجاد کنید.

🔰 مثال از کلاس های تو در تو:
class Car{
class Engine{
}
}
——-——
class LinkedList{
class Node{

}
}
———
#innerClasses #staticClasses #Class #nested #nestedClasses
〽️ @PieceJava
👍71
Media is too big
VIEW IN TELEGRAM
#یکبار_برای_همیشه

چرا وقتی یک آبجکت رو چاپ میکنیم، خروجی زیر رو داره؟
[I@12b231e
Employee@312b4a3
- خروجی بالا دقیقا چیه؟
- چجور میشه تغییرش داد؟
- هش کد چیه؟ ادرس حافظست یا...؟
- متد toString چیست؟

⭕️ هنگ درام: کیا رکنی
———
#hashcode #toString
🟡 @PieceJava
13👍5👏2
💠 ده تا از پرکاربرد ترین کلید های میانبر در #Intellij_IDEA

#shortcut
#keys #Intellij #IDEA
〽️ @PiECEJAVA
5
تیکه پاره های جاوا
💠 ده تا از پرکاربرد ترین کلید های میانبر در #Intellij_IDEA #shortcut #keys #Intellij #IDEA 〽️ @PiECEJAVA
🔆 یکی از معروف ترین IDE های جاوا، اینتلجی هستش (Intellij IDEA) که توی این پست روی صحبتمون با کلیدهای میانبر پر استفاده در اینتلیجی هست:

⚡️ کلید Alt + Enter
وقتی برنامه روی یه خط کد خطای کمپایل داره (خطوطی که مستقیم قبل از اجرا خود ide زیرشون به رنگ قرمز خط میکشه) میتونید با موس روی کد کلیک کنید و Alt + Enter رو همزمان بگیرید تا پیشنهادات IDE برای رفع خطا ظاهر بشه.

البته نه فقط برای خطا بلکه اگه اخطار هم داشته باشید (هایلایت های به رنگ زرد)، در این حالت هم میتونید روی کد کلیک و با گرفتن همزمان کلید های Alt + Enter پیشنهادات اینتلیجی برای رفع اخطار رو مشاهده کنید.

⚡️کلید F2
برای رفتن به سر سطری که ارور داره بجای استفاده از اسکرول بار یا کلیک موس، میتونید از کلید F2 استفاده کنید. هر بار زدن کلید F2 باعث میشه به ارور بعدی پرش کنید.

⚡️کلید Alt+1 یا ⌘1
برای باز کردن منوی Project فقط کافیه از کلید ترکیبی Alt + 1 استفاده کنید

⚡️کلید Esc
بعد از باز کردن منوی project اگه میخواین دوباره برگردین رو صفحه کد، فقط کافیه Esc رو بزنید :)

⚡️کلید Ctrl + E یا ⌘E
بکمک این کلید ترکیبی میتونید فایل های اخیری که باز کردید رو مشاهده کنید. برای مثال آخرین کلاس هایی که چک کردید.. ضمنا بوسیله این میانبر، میتونید حتی باقی پنجره ها از جمله (Problems)(Bookmarks) و حتی اونایی که کلید میانبر هم ندارن رو مشاهده کنید.

⚡️کلید Ctrl + B یا ⌘B
احتمالا پیش اومده که توی کدتون به یه داده برخورد کردید و میخواستید بدونید که کجا تعریف شده. تو این حالت میتونید از کلید Ctrl + B استفاده کنید. در واقع از طریق این میانبر به جایی که برای اولین بار داده تعریف شده پرش میکنید.

⚡️کلید Alt + F7
اما اگه روی تعریف داده بودید ولی میخواستید ببینید که این تعریف کجا ها استفاده شده، میتونید از کلید Alt + F7 استفاده کنید.

⚡️کلید Ctrl+ W یا Shift + Ctrl + W یا ⌥↑ یا ⌥↓
💬 این یکی رو من به شخصه دوست دارم D:
بوسیله این کلید میتونید بلاک کد اطراف cursor (نشونگر ماوس) رو انتخاب کنید. مثلا به فرض اگه نشونگر روی بلاک for هستش، با زدن Ctrl + W کل بلاک for انتخاب میشه. البته با هر بار زدن این کلید، محدوده انتخابی گسترده تر و گسترده تر میشه.

⚡️کلید Ctrl + / یا ⌘/
برای کامنت کردن یک خط کد، فقط کافیه نشونگر ماوس روی خط کد باشه تا با زدن یکبار Ctrl + / کل خط به یک کامنت تک خطی تبدیل بشه

⚡️کلید میانبر Shift + Ctrl + Enter یا ⇧⌘⏎
برای کامل کردن خط کد میتونید از این کلید ترکیبی استفاده کنید. البته اجازه بدید یکم بیشتر در این مورد صحبت کنیم. مثلا حتی برای قرار دادن سمیکالن، برای قرار دادن براکت باز و بسته برای دستور if, for و... میتونید بعد از نوشتن کد، همزمان این سه کلید رو فشار بدید تا کد بصورت خودکار تکمیل بشه
—————
〽️@PiECEJAVA
11👍6
This media is not supported in your browser
VIEW IN TELEGRAM
#فان
از امروز چاپ هلو ورلد فقط اینطوری😁👍

import java.util.Random;

public class Helloworld {
public static void main(String[] args) throws InterruptedException {
String expectedOutput = "HELLO WORLD :D";
String guessOutput = "";
Random random = new Random();
int min = 32;
int max = 127;
int i = 0;
do {
char expectedChar = expectedOutput.charAt(i);
char randomGuess = (char) (random.nextInt(max - min) + min);
System.out.println(guessOutput + randomGuess);
Thread.sleep(1);
if (randomGuess == expectedChar) {
guessOutput+=randomGuess;
i++;
}
} while (i != expectedOutput.length());
}
}
———
〽️@PieceJava
😁7👍3👏3🤔1
تیکه پاره های جاوا pinned «💬 لینک گروه تیکه پاره های جاوا جهت پرسش و پاسخ: https://t.iss.one/+ReyHHkFq42U5Mjg0»
Media is too big
VIEW IN TELEGRAM
#یکبار_برای_همیشه
چجوری میشه از تاریخ داخل برنامه هامون استفاده کنیم؟

نحوه کار با API جدید برای تاریخ در جاوا


🪲 00:27 - باگ تاریخی Y2K و اختلال سراسری در سیستم های دیجیتالی کل جهان
🕑 01:54 کلاس Date
🕒 04:47 مشکلات کلاس Date
🕓 05:23 معرفی Date Time API
🕕 06:15 معرفی کلاس Local Date و نحوه نمونه سازی از Local Date
🕖 8:08 بررسی اینام DayOfWeek
🕗 09:53 بررسی متد های کلاس LocalDate

⭕️ قسمت اول
🎬 تماشا از طریق آپارات
———————
#localDate #date #DayOfWeek
〽️@PiECEJAVA
9👏1
🟡 دوره خصوصی شی گرایی در جاوا

سلام دوستان وقتتون بخیر

تا قبل از عید قصد برگزاری دوره ای رو داریم برای مبحث شی گرایی در جاوا به همراه آشنایی اولیه با مفاهیم پایگاه داده.

💬 دوره کاملاً پروژه محوره یعنی پس از هر جلسه، تمریناتی داده میشه که میبایست تا قبل از جلسه بعدی انجام بدید + پشتیبانی آنلاین

💡 هدف از برگزاری جلسات یادگیری عمیق تر مباحث شی گرایی هست.

مفاهیمی که پوشش داده میشه:
🔅مقدمات OOP
🔅 مفهوم ترکیب
🔅 ارث بری
🔅 ابسترکت
🔅 اینترفیس
🔅 مفهوم جنریک و کلاس های جنریک.
🔺 البته در نظر داشته باشید که اینها عنوان جلسات هست و برای هر عنوان تمرین و پروژه داریم.

🟡 برای هماهنگی پیام بدید:
🆔 @MRVJ475
~ موفق باشید
~ محمدرضا عظیمی فرد

〽️@PiECEJAVA
👍102
تیکه پاره های جاوا pinned «🟡 دوره خصوصی شی گرایی در جاوا سلام دوستان وقتتون بخیر تا قبل از عید قصد برگزاری دوره ای رو داریم برای مبحث شی گرایی در جاوا به همراه آشنایی اولیه با مفاهیم پایگاه داده. 💬 دوره کاملاً پروژه محوره یعنی پس از هر جلسه، تمریناتی داده میشه که میبایست تا قبل…»