مفاهیم Object Oriented Design (پارت اول)

برای شرکت در این دوره به پشتیبانی سایت در تلگرام پیام بدید یا پس از عضویت در سایت از طریق پنل کاربری تیکت بزنید. یک …

قیمت : 1.000.000 تومان
افزودن به علاقه مندی ها

برای شرکت در این دوره به پشتیبانی سایت در تلگرام پیام بدید یا پس از عضویت در سایت از طریق پنل کاربری تیکت بزنید.

یک اسم نام آشنا که احتمالن همه ی ما فکر میکنیم که کامل بهش مسلطیم و نیازی به آموزش و مطالعه و تحقیق در مورد اون نداریم:‌ Object Oriented یا OO.
من اینجام که بهت بگم که شاید اشتباه کنی…شاید خیلی از تصور هایی که راجع به این کلمه داری درست نباشه و شاید نیاز به مطالعه بیشتر داری…

احتمالن از همون روز اول آموزش بهمون گفتن که OO در 3 تا پارامتر خلاصه میشه :

  • Encapsulation
  • Inheritance
  • Polymorphism

شاید حتا یه تعصب خاصی روی این ها پیدا کردیم و فکر میکنیم که OO کاملن و بدون چون و چرا به تقویت همه این ها کمک میکنه.

  • از اون گذشته آیا هدف اصلی OO همین ها هست؟
  • اگر همین هاست, مفهوم دقیق این موارد چی هستن؟
  • و اگر همین ها نیست پس هدف اصلی OO چی هست؟
  • آیا این 3 موردی که نام بردیم همشون جزء شاخصه های اصلی OO هستن و در سایر زبان های غیر OO نمیتونیم اون ها رو پیاده کنیم؟
  • آیا  Encapsulation رو به خوبی درک کردیم؟
  • آیا Encapsulation فقط private کردن دیتاهای یه کلاسه؟

 

برای جواب دادن به این سوال ها و خیلی سوال های دیگه قصد داریم یکم بریم عقب و ابتدا فلسفه ی نرم افزار رو بررسی کنیم و ببینیم که اصلن نرم افزار چی هست و یه نرم افزار خوب چه ویژگی هایی داره و اصلن وظیفه ی ما به عنوان یه برنامه نویس در تولید یه نرم افزار چیه و بعد از اون دونه دونه این موارد رو بررسی کنیم.

 

مباحث دوره به شرح زیر هست:

 

 معماری Clean:

معماری کلین یه اسمی که این روزا ورد زبون خیلی از برنامه نویس ها هست که میخوان یادش بگیرن یا یادش گرفتن یا به دلیل سخت بودنش با کلی تفسیر و توجیه میگن که نیازی بهش نداریم و یا ….

اینجا قراره یه داستان متفاوتی رو با هم بنویسیم.

اول مفاهیم معماری کلین رو به خوبی و عمیق با هم یاد میگیریم و بعد از اون هم یه پروژه رو تعریف میکنیم و مفاهیم رو عملی پیاده میکنیم.

ولی کار به اینجا ختم نمیشه و توی فصل Encapsulation پروژه رو ادامه میدیم.

 

Encapsulation

معماری زدن بدون رعایت Encapsulation بی معنی و یه چیزی شبیه به شوخیه.

Encapsulation فقط Information hiding یا private کردن دیتا ها نیست. پس چیه؟

نگران نباش. یه فصل اختصاصی برای Encapsulation داریم و یه پروژه رو کامل بررسی میکنیم.

قراره پروژه ای که توی فصل کلین زدیم رو توی این فصل ادامه بدیم و تر تمیزش کنیم.

واقعن بهترین و متفاوت ترین فصل این دوره همین فصل Encapsulation اش هست و موقع خوندش شیش دنگ حواستو جمع کن!!!

.

 

اصول SOLID:

توی یکی از داستان های جذابمون اما وارد چالش جالب و پر مخاطره ای میشیم . اصول طراحی SOLID. این اصول رو هم به شکل حیرت آوری مورد بررسی قرار میدیم. خیلی خیلی ریز میشیم و از جهات مختلف بهشون حمله میکنیم. تاریخچه ی اون ها رو میگیم و نقشی که از ابتدای پیدایش تا به امروز در نرم افزار بازی میکنن و جایگاهیی که در OO یا طراحی شی گرا دارن. کار ما به این جا ختم نمیشه و این اصول رو از نقطه نظر معماری نرم افزار هم بررسی میکنیم. همچنین علاوه بر خوبی هاشون هزینه هایی هم که روی دستمون میگذارن رو میگیم.

  • آیا لازمه همیشه و همه چا بدون چون و چرا اون ها رو رعایت کنیم؟
  • اگه آره کار سخت میشه چون رعایت کردنشون همه جا و توی همه شرایط به این راحتی نیست.
  • اگه نه بازم کار سخت تر میشه چو ن باید به یه دید تحلیلی خوبی برسیم ک کی و کجا چه کاری رو انجام بدیم.
  • دید مهندسی…

 

 

زبان برنامه نویسی و فریمورک:

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

مثال های این آموزش با استفاده از زبان JAVA و C# و Dart و در موارد مورد نیاز علاوه بر اون با یک زبان dynamic type شرح داده میشن.

بعد از اتمام این آموزش دیگه از این شوخی ها نداریم که مثلن بری سرچ کنی که نحوه پیاده سازی معماری کلین در PHP یا JAVA یا Dart یا مثلن Flutter و از این چرت و پرت ها. وقتی مفاهیم رو یاد گرفتیم باید بتونی هر جایی اون ها رو پیاده کنی.

البته ناگفته نماند که در بخش های مختلف این دوره ما مقایسه های خیلی خوبی بین زبان های static type و  dynamic type انجام میدیم و تفاوت ویژگی ها و پیاده سازی های مختلف بین اون ها رو شرح میدیم. پس JS کار ها و … هم نگران نباشن.

 

پروژه محور:

توی فصل معماری کلین و Encapsulation یه پروژه کوچیک رو کار میکنیم و مفاهیم رو عملی پیاده میکنیم. توی سایر فصل ها پروژه نداریم ولی مثال های متنوع برای درک مفاهیم میزنیم.

 

ویژگی ها:

  • کاملن تحلیلی و مفهومی.
  • متفاوت از آن چه که تا به حال یاد گرفته اید.
  • یادگیری دقیق و مفهومی OO.
  • یادگیری معماری کلین.
  • درک Encapsulation
  • رفع اشتباهات و خطاهای رایج در مورد OO.
  • یادگیری عمیق اصول SOLID.
  • مقایسه بین زبان های static type و dynamic type در بحث های مختلف (پس فقط یکی از اون ها رو انتخاب نمیکنیم و به تسلط خوبی برای درک مفاهیم در هر دو میرسیم. مثلن لازمه اصول سالید رو در هر دو بررسی کنیم).
  • کسب آمادگی لازم برای یادگیری دیزاین پترن های OO.

 

ممنونم از اینکه این متن رو خوندی.

سوالاتت در مورد این دوره رو در بخش نظرات دوره مطرح کن یا به پشتیبانی سایت در تلگرام پیام بده.

برای شرکت در این دوره به پشتیبانی سایت در تلگرام  پیام بدید یا پس از عضویت در سایت از طریق پنل کاربری تیکت بزنید.

فصل اول: ویژگی های یک نرم افزار خوب

مقدمه
خصوصی

این بخش خصوصی می باشد، برای دسترسی کامل به دروس این دوره باید این دوره را خریداری نمایید.

مهندس ها چی تولید میکنن؟
خصوصی

این بخش خصوصی می باشد، برای دسترسی کامل به دروس این دوره باید این دوره را خریداری نمایید.

تفاوت مهندسی نرم افزار و بقیه مهندسی ها؟
خصوصی

این بخش خصوصی می باشد، برای دسترسی کامل به دروس این دوره باید این دوره را خریداری نمایید.

Two values of software
خصوصی

این بخش خصوصی می باشد، برای دسترسی کامل به دروس این دوره باید این دوره را خریداری نمایید.

برنامه نویس ها مهندس هستن یا هنرمند؟
خصوصی

این بخش خصوصی می باشد، برای دسترسی کامل به دروس این دوره باید این دوره را خریداری نمایید.

Test Driven Development
خصوصی

این بخش خصوصی می باشد، برای دسترسی کامل به دروس این دوره باید این دوره را خریداری نمایید.

Design Smell, Design Principle, Design Pattern
خصوصی

محتوایی یافت نشد

YAGNI and KISS Principles
خصوصی

این بخش خصوصی می باشد، برای دسترسی کامل به دروس این دوره باید این دوره را خریداری نمایید.

خلاصه فصل
خصوصی

محتوایی یافت نشد

فصل دوم:‌ معرفی کوتاه پارادایم های Structured Object-oriented Functional

دهه ی طلایی
خصوصی

این بخش خصوصی می باشد، برای دسترسی کامل به دروس این دوره باید این دوره را خریداری نمایید.

معرفی Structured و OO و Functional
خصوصی

این بخش خصوصی می باشد، برای دسترسی کامل به دروس این دوره باید این دوره را خریداری نمایید.

کابوسی به نام goto
خصوصی

این بخش خصوصی می باشد، برای دسترسی کامل به دروس این دوره باید این دوره را خریداری نمایید.

انقلاب بزرگ, آقای خاص و تولد Structured
خصوصی

محتوایی یافت نشد

Object Oriented چیه؟
خصوصی

محتوایی یافت نشد

فصل سوم:‌ The basics of Object Oriented

تعریف ماژول, کلاس و دیتا استراکچر
خصوصی

محتوایی یافت نشد

Inheritance
خصوصی

محتوایی یافت نشد

Polymorphism
خصوصی

این بخش خصوصی می باشد، برای دسترسی کامل به دروس این دوره باید این دوره را خریداری نمایید.

مساله 1
خصوصی

این بخش خصوصی می باشد، برای دسترسی کامل به دروس این دوره باید این دوره را خریداری نمایید.

تحلیل کوتاه و راهنمای مساله 1
خصوصی

محتوایی یافت نشد

Inheritance, این اژدها ما رو میکشه سولوشن مساله 2 با استفاده از inheritance و بررسی مزیت ها و پیامد ها
خصوصی

محتوایی یافت نشد

Composition, فرشته ی نجات از چنگال اژدها سولوشن مساله 2 با استفاده از Composition
خصوصی

محتوایی یافت نشد

مقایسه Inheritance و Composition
خصوصی

محتوایی یافت نشد

تمرین ها
خصوصی

محتوایی یافت نشد

فصل چهارم:‌ Clean Architecture

معماری چیه؟
خصوصی

این بخش خصوصی می باشد، برای دسترسی کامل به دروس این دوره باید این دوره را خریداری نمایید.

MVC اصیل و Observer Pattern
خصوصی

این بخش خصوصی می باشد، برای دسترسی کامل به دروس این دوره باید این دوره را خریداری نمایید.

معرفی Clean Architecture
خصوصی

محتوایی یافت نشد

توضیح پٰروژه
خصوصی

این بخش خصوصی می باشد، برای دسترسی کامل به دروس این دوره باید این دوره را خریداری نمایید.

تحلیل کوتاه Entity ها
خصوصی

این بخش خصوصی می باشد، برای دسترسی کامل به دروس این دوره باید این دوره را خریداری نمایید.

اضافه کردن Entity های User و Course و EnrolledCourse
خصوصی

این بخش خصوصی می باشد، برای دسترسی کامل به دروس این دوره باید این دوره را خریداری نمایید.

Entities base class
خصوصی

این بخش خصوصی می باشد، برای دسترسی کامل به دروس این دوره باید این دوره را خریداری نمایید.

UsersRepository و CoursesRepository
خصوصی

این بخش خصوصی می باشد، برای دسترسی کامل به دروس این دوره باید این دوره را خریداری نمایید.

Repository Base class
خصوصی

این بخش خصوصی می باشد، برای دسترسی کامل به دروس این دوره باید این دوره را خریداری نمایید.

Create User Usecase
خصوصی

این بخش خصوصی می باشد، برای دسترسی کامل به دروس این دوره باید این دوره را خریداری نمایید.

Get User by id Usecase
خصوصی

این بخش خصوصی می باشد، برای دسترسی کامل به دروس این دوره باید این دوره را خریداری نمایید.

Get All Users Usecase
خصوصی

این بخش خصوصی می باشد، برای دسترسی کامل به دروس این دوره باید این دوره را خریداری نمایید.

Enroll In Course Usecase
خصوصی

این بخش خصوصی می باشد، برای دسترسی کامل به دروس این دوره باید این دوره را خریداری نمایید.

Promote to Silver Usecase
خصوصی

این بخش خصوصی می باشد، برای دسترسی کامل به دروس این دوره باید این دوره را خریداری نمایید.

Promote to Gold Usecase
خصوصی

این بخش خصوصی می باشد، برای دسترسی کامل به دروس این دوره باید این دوره را خریداری نمایید.

برای Repository ها اینترفیس بزنیم یا نه؟
خصوصی

این بخش خصوصی می باشد، برای دسترسی کامل به دروس این دوره باید این دوره را خریداری نمایید.

برای دیتابیس model بزنیم یا نه؟
خصوصی

محتوایی یافت نشد

فصل پنجم:‌ Encapsulation

Encapsulation, Information hiding? Bundling Data and Behavior?
خصوصی

این بخش خصوصی می باشد، برای دسترسی کامل به دروس این دوره باید این دوره را خریداری نمایید.

تعریف کوتاه State, Side Effect و ...
خصوصی

این بخش خصوصی می باشد، برای دسترسی کامل به دروس این دوره باید این دوره را خریداری نمایید.

بررسی مشکلات پیاده سازی پروژه فصل معماری کلین
خصوصی

این بخش خصوصی می باشد، برای دسترسی کامل به دروس این دوره باید این دوره را خریداری نمایید.

مفهوم Encapsulation
خصوصی

این بخش خصوصی می باشد، برای دسترسی کامل به دروس این دوره باید این دوره را خریداری نمایید.

تخلیه بیزینس لاجیک از CreateUser Usecase
خصوصی

محتوایی یافت نشد

Value Object و Domain Driven Design
خصوصی

این بخش خصوصی می باشد، برای دسترسی کامل به دروس این دوره باید این دوره را خریداری نمایید.

ساخت Value Object برای UserName و Email
خصوصی

این بخش خصوصی می باشد، برای دسترسی کامل به دروس این دوره باید این دوره را خریداری نمایید.

GetAllUsers و GetUserById usecases
خصوصی

این بخش خصوصی می باشد، برای دسترسی کامل به دروس این دوره باید این دوره را خریداری نمایید.

ساخت Value Object برای ExpirationDate
خصوصی

این بخش خصوصی می باشد، برای دسترسی کامل به دروس این دوره باید این دوره را خریداری نمایید.

Observable Behavior vs Implementation Detail
خصوصی

این بخش خصوصی می باشد، برای دسترسی کامل به دروس این دوره باید این دوره را خریداری نمایید.

تخلیه بیزینس لاجیک از Promote UseCases
خصوصی

این بخش خصوصی می باشد، برای دسترسی کامل به دروس این دوره باید این دوره را خریداری نمایید.

UserStatus Value Object
خصوصی

این بخش خصوصی می باشد، برای دسترسی کامل به دروس این دوره باید این دوره را خریداری نمایید.

Object Oriented vs Functional Programming
خصوصی

این بخش خصوصی می باشد، برای دسترسی کامل به دروس این دوره باید این دوره را خریداری نمایید.

جمع بندی و قدم بعدی
خصوصی

این بخش خصوصی می باشد، برای دسترسی کامل به دروس این دوره باید این دوره را خریداری نمایید.

فصل ششم:‌ مقدمه ای بر اصول SOLID

Design؟ Design Principle؟ Design pattern؟
خصوصی

محتوایی یافت نشد

تاریخچه و تعریف کوتاه اصول SOLID
خصوصی

محتوایی یافت نشد

فصل هفتم: SRP

از این زاویه به SRP نگاه نکن!!!
خصوصی

محتوایی یافت نشد

مفهوم Responsibility
خصوصی

محتوایی یافت نشد

مساله 1
خصوصی

محتوایی یافت نشد

تحلیل مساله 1
خصوصی

محتوایی یافت نشد

مساله 2
خصوصی

محتوایی یافت نشد

تحلیل مساله 2
خصوصی

محتوایی یافت نشد

تعمیم SRP به اجزای دیگر و بررسی از دیدگاه معماری
خصوصی

محتوایی یافت نشد

SRP vs Do one thing
خصوصی

محتوایی یافت نشد

خلاصه فصل
خصوصی

محتوایی یافت نشد

فصل هشتم: OCP

مفهوم Open-Closed
خصوصی

محتوایی یافت نشد

مثالی از نقض OCP و بررسی مشکلات و حل آن قسمت اول مثال OCP
خصوصی

محتوایی یافت نشد

همیشه یه تیری از غیب OCP رو سوراخ میکنه قسمت دوم مثال OCP
خصوصی

محتوایی یافت نشد

ابداع abstraction جدید برای ترمیم سوراخ و انطباق مجدد بر OCP, اما ... قسمت سوم مثال OCP
خصوصی

محتوایی یافت نشد

استفاده از Visitor Pattern و ... برای انطباق بر OCP قسمت چهارم مثال OCP
خصوصی

محتوایی یافت نشد

Strategy و Template Method با مثال قسمت اول Design Pattern ها
خصوصی

محتوایی یافت نشد

معرفی چند دیزاین پترن دیگر که به OCP کمک میکنند قسمت دوم Design Pattern ها
خصوصی

محتوایی یافت نشد

OCP رهبر سیستم بررسی OCP از دیدگاه معماری و جایگاه OCP نسبت به سایر اصول SOLID
خصوصی

محتوایی یافت نشد

فصل نهم: LSP

هدف LSP چیه؟
خصوصی

محتوایی یافت نشد

type. subtype, inheritance, duck typing
خصوصی

محتوایی یافت نشد

Square/Rectangle Problem
خصوصی

محتوایی یافت نشد

Representative Rule و حل Square/Rectangle Problem
خصوصی

محتوایی یافت نشد

Singly/Circular LinkedList & Refactoring
خصوصی

محتوایی یافت نشد

ترجمه بخشی از کتاب Design Patterns
خصوصی

محتوایی یافت نشد

سخن پایانی
خصوصی

محتوایی یافت نشد

فصل دهم: DIP

مقدمه
خصوصی

محتوایی یافت نشد

انواع Dependency
خصوصی

محتوایی یافت نشد

Structured Design vs Object Oriented Design با مثال
خصوصی

محتوایی یافت نشد

تعریف و مفهوم DIP Class Level
خصوصی

محتوایی یافت نشد

تعریف و مفهوم DIP Architecture level
خصوصی

محتوایی یافت نشد

DIP و زبان های داینامیک تایپ
خصوصی

محتوایی یافت نشد

Depend On Abstractions
خصوصی

محتوایی یافت نشد

فصل یازدهم: ISP

Fat Classes و ISP
خصوصی

محتوایی یافت نشد

یک مثال
خصوصی

محتوایی یافت نشد

داستان ISP و بررسی از دیدگاه معماری
خصوصی

محتوایی یافت نشد

پیوست

راهنمای جاوا: Inheritance, Polymorphism, Encapsulation
خصوصی

محتوایی یافت نشد

راهنمای سی شارپ: Inheritance, Polymorphism, Encapsulation
خصوصی

محتوایی یافت نشد

چند نکته در مورد دیاگرام های uml
خصوصی

محتوایی یافت نشد

منابع
خصوصی

محتوایی یافت نشد
  • anonymousدانشجو دوره

    عاقا دوره عالیه
    عااااالی
    هر کی میخواد مهندس و معمار واقعی نرم افزار بشه بیاد تو دوره که از دستش میره…
    خوبیه دوره اینه که مطالب علمی کتابهای سنگین زبان اصلی رو با مثالهای قابل فهم به مخاطب میرسونه و اول راه میاد راه حلهایی میده و بعدش میزنه همون راه خلها رو میترکونه و ذهن مخاطبو به چالش میکشه…
    یعتی نحوه فکر کردن و تحلیل کردن هم کم کم یاد میگیری

  • محمد امیندانشجو دوره

    اگه میخواین یک قدم به برنامه نویس واقعی شدن نزدیکتر بشید به شدت پیشنهاد میکنم تو این دوره شرکت کنید

  • paralp3084دانشجو دوره

    خیلی مفهومی و عمیقه مطالب و واقعا پیشرفته اس ممنون ازتون

  • YousefZKدانشجو دوره

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

  • مهدیدانشجو دوره

    اگه میخواین یکم به مهندس ها نزدیکتر بشین این دوره خوبه مفاهیم برنامه نویسی رو به زبان ساده بیان میکنه باعث میشه یکم به ذهن برنامه نویسیتون ساختار بدین و از دید بالاتری بهش نگاه کنید

  • anonymousدانشجو دوره

    فصل یک رو تموم کردم و تا اینجا عالی بوده
    دمت گرم

  • Ramezaniدانشجو دوره

    دمت گرم، خیلی با حوصله و دقیق توضیح میدید
    ممنون

قوانین ثبت دیدگاه

  • از درج دیدگاه های تکراری پرهیز نمایید.
  • دیدگاه های نامرتبط به مطلب تایید نخواهد شد.
  • جهت ثبت بازخورد ابتدا محصول را خریداری نمایید.

یک دیدگاه اضافه کنید

یه برنامه نویس محقق ...
دوره هـای آمـوزشی مرتبط
related training courses
400000
38%
250000 تومان
آموزش
جــدید
33
دانشجو
Dart & Flutter
Dart 3
1 تومان
آموزش
جــدید
1
دانشجو
دسته بندی اصلی
Clean Code
تعداد دانشجو
45
نوع آموزش
مقاله
سطح آموزش
پیشرفته
سرفصل ها
11
وضعیت
تکمیل شده
100% دوره آموزشی تکمیل شده است
قیمت دوره
1.000.000 تومان
بازخورد
5.00 از 6 بازخورد
تاریخ انتشار
3 بهمن 1401
تاریخ بروزرسانی
29 بهمن 1402
error: Alert: Content is protected !!