# مقدمه

### ابزار های استفاده شده در این آموزش:

* [x] [**Android Studio**](https://developer.android.com/studio/)
* [x] [**Kotlin**](https://kotlinlang.org/)
* [x] [**MVVM design pattern**](https://en.wikipedia.org/wiki/Model%E2%80%93view%E2%80%93viewmodel)
* [x] [**RxJava**](https://github.com/ReactiveX/RxJava)
* [x] [**Android Architecture components**](https://developer.android.com/topic/libraries/architecture/)
* [x] [**Dagger**](https://google.github.io/dagger/):nauseated\_face: ***(NOT GOING TO USE IT)***
* [x] [**Koin**](https://insert-koin.io/) :heart\_eyes:&#x20;
* [ ] [**Room**](https://developer.android.com/topic/libraries/architecture/room)
* [ ] [**Retrofit**](https://square.github.io/retrofit/)

{% hint style="info" %}
**نکته:** *در این دوره سعی می شود که به صورت ساده و پروژه محور، با این ابزار های نسبتأ پیچیده کار کنید!*
{% endhint %}

## [android studio:](https://developer.android.com/studio/)

اندروید استدیو محیط توسعه یکپارچه رسمی اندروید می باشد که توسط شرکت [JetBrains](https://www.jetbrains.com/) توسعه داده می شود. اندروید استدیو یکی از زیر مجموعه های نرم افزار [IntelliJ IDEA](https://www.jetbrains.com/idea/) می باشد و برای توسعه اپلیکیشن های اندرویدی سفارشی شده است!

## [Kotlin:](https://kotlinlang.org/)

یک زبان برنامه نویسی نوع ثابت(statically typed programming language) می باشد که روی ماشین مجازی [جاوا](https://www.java.com/en/) اجرا می شود. کاتلین قابلیت کامپایل شدن به [جاوااسکریپت](https://www.javascript.com/) را دارد! این زبان توسط شرکت [JetBrains](https://www.jetbrains.com/) توسعه داده شده است.

## [MVVM Design Pattern:](https://en.wikipedia.org/wiki/Model%E2%80%93view%E2%80%93viewmodel)

یک نوع معماری نرم افزار است که امروزه محبوبیت زیادی میان برنامه نویسان پیدا کرده! از قابلیت های این معماری این است که جداسازی رابط گرافیکی با سایر اجزای نرم افزار را انجام می دهد.&#x20;

در ادامه درباره این معماری بیشتر توضیح خواهیم داد!

## [RxJava:](https://github.com/ReactiveX/RxJava)

یک کتابخانه مربوط به استفاده از [Reactive Extensions](http://reactivex.io/) در زبان جاوا است که با آن می توان تاثیر رویدادها را روی برنامه کنترل و مشاهده کرد!&#x20;

تعریفی که در صفحه اصلی کتابخانه گذاشته شده:

RxJava is a Java VM implementation of [Reactive Extensions](http://reactivex.io/): a library for composing asynchronous and event-based programs by using observable sequences.

پ ن: تعریفی ساده تر از این به ذهنم نرسید. ☹️&#x20;

## [ReactiveX Extensions:](http://reactivex.io/)

تلفیقی از بهترین ایده ها در ساختار طراحی Observer و **Iterator** و برنامه نویسی عملکردی(Functional programming).

## [Android Architecture Components:](https://developer.android.com/topic/libraries/architecture/)

مجموعه ای از کتابخانه های اندرویدی است که به شما کمک می کند تا برنامه های قوی، قابل تست و قابل نگه داری توسعه بدهید!

## [Dagger:](https://google.github.io/dagger/)

کتابخانه ای برای [تزریق وابستگی](https://en.wikipedia.org/wiki/Dependency_injection) است که توسط شرکت [square](https://squareup.com/)، و بعد توسط گوگل توسعه داده شد.

## [Room:](https://developer.android.com/topic/libraries/architecture/room)

یک لایه abstraction برای SQLite فراهم می کند تا یک ارتباط قوی برای استفاده از قدرت کامل SQLite با پایگاه داده ایجاد کند.

## [Retrofit:](https://square.github.io/retrofit/)

یک کتابخانه HTTP برای استفاده از شبکه در اندروید است که توسط شرکت [Square](https://squareup.com/) توسعه داده شده است.

## اسلاید مربوط به مقدمه:

{% embed url="<https://www.beautiful.ai/deck/-LPqaUgIrcEwlW7AZdnT/Modern-android-development>" %}
اسلاید
{% endembed %}

## مقدمه در آپارات:&#x20;

{% embed url="<https://www.aparat.com/v/avRuU>" %}

##

## درباره من:

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

**راه های ارتباطی با من:**

* [Gmail](mailto://moeinAbdi77@gmail.com)
* [Telegram](https://t.me/notitle)
* [Instagram](https://instagram.com/moeinDeveloper)
* [LinkedIn](https://www.linkedin.com/in/moeindeveloper/)
* [Github](https://github.com/moeinDev)


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://moeindeveloper.gitbook.io/maad/master.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
