دوره آموزشی سی پلاس پلاس مدرن

شروع رویداد
جمعه ۸ تیر ۹۷ ۰۸:۰۰
پایان رویداد
جمعه ۲۶ مرداد ۹۷ ۱۲:۰۰
مکان رویدادتهران
موضوع رویدادتکنولوژی / برنامه نویسی
اضافه به تقویم
دوره آموزشی سی پلاس پلاس مدرن
برگزارکننده‌ی رویداد
تماس با برگزارکننده
۰۹۳۷۸۵۶۲۱۰۳
گزارش
امکان ثبت‌نام برای این رویداد وجود ندارد.

کافه تکنولوژی

با توجه به توسعه روز افزون زبان برنامه نویسی C++ و همچنین افزایش نیاز صنعت نرم افزار به مهندسین و برنامه نویسان زبده، تیم جوان و متخصص کافه تکنولوژی تصمیم به برگزاری دوره آموزشی سی پلاس پلاس مدرن کرد.

سرفصل های این دوره آموزشی حول یک پروژه ی نرم افزاری کاربردی ارائه خواهند شد. سرفصل های اصلی این دوره شامل:

1- Modern C++ (cpp11 and 14)
2- QT5-QML
3- Software Architecture(clean architecture)
4- Design Pattern(SOLID, Repository pattern, ...)
5- Object Oriented Design
5- BOOST Library
6- Test Driven Development(unit testing, mock concept, integration test)
7- Database (SQLite)
8- OpenCV (C++ library)
9- Version Control (Git)
10- Issue Tracker (Gitlab)

بدین معنی که در طول این 32 ساعت، شرکت کنندگان این دوره یک پروژه کاربردی پیاده سازی خواهند کرد، که با تمامی موارد ذکر شده آشنا خواهند شد.

این دوره آموزشی در طول 8 هفته برگزار خواهد شد، هر جلسه 4 ساعت و همراه با پذیرایی خواهد بود.

روزهای برگزاری: جمعه ها از ساعت 15 تا 19.

در بخش های زیر در مورد هر سرفصل توضیحات بیشتری داده شده است.

Modern C plus plus

اگر شما یک برنامه نویس با تجربه C++ هستید، به احتمال زیاد با ویژگی های جدید C++11 و 14 برخورد کرده اید و متعجب شدید.

auto declarations

range-based for loops

lambda expressions

و rvalue references که چهره ی سی پلاس پلاس را تغییر داد

و ویژگی های جدید مربوط به concurrency که فوق العاده هستند

و...

"بله این سی پلاس پلاس است و نه بیشتر".

قصد داریم یکسری راه کارهای موثر برای استفاده از سی پلاس پلاس مدرن ارائه دهیم.

بجای 0 و typedef از nullptr و alias decleration  استفاده کنید.

بجای enum از enum class استفاده کنید.

از اشاره گرها استفاده نکنید، هرگز!

اشاره گرهای هوشمند (smart pointers):

shared_ptr

weak_ptr

unique_ptr

ابزاری قدرتمند برای مدیریت بهتر و بهینه تر حافظه هستند.

و اما .... Move Semantic که دنیای سی پلاس پلاس را تغییر داد.

 

اگر انگیزه ای برای یادگیری ویژگی های جدید سی پلاس پلاس مدرن را دارید و در جستجوی راه کارهایی موثر برای استفاده از این ویژگی های مدرن هستید حتما در دوره آموزشی ما شرکت کنید. ما به شما کمک میکنیم تا از سی پلاس پلاس مدرن در جهت پیاده سازی نرم افزاری بهینه، چالاک، قابل نگه داری و قابل جابه جایی استفاده کنید.

میخواهید با انواع type deduction در سی پلاس پلاس آشنا بشید؟

یا ... زمانی که از auto استفاده میکنید چه اتفاقی می افته؟

و یا اینکه ... علاقه مندید که بدونید چرا توابع const  بایدthread safe  باشند؟

با Pimpl Idiom آشنایی دارید؟ میخواهید نحوه پیاده سازی اش را با unique_ptr  بدونید؟

میدونید چرا از default capture mode  در lambda expression  نباید استفاده کرد؟

تفاوت بین std::atomic  و volatile چیست؟

جواب تمام این سوال ها را این دوره آموزشی خواهیم داد.

 

در طول این دوره آموزشی و توسعه پروژه مذکور، شما با مفاهیم سی پلاس پلاس مدرن شامل:

  1.  move semantic
  2. پوینتر های هوشمند شامل:
    1. std::shared_ptr
    2. std::weak_ptr
    3. std::unique_ptr
  3. auto type deduction
  4. STL Container
  5. STL Algorithm
  6. STL chrono
  7. lambda expression
  8. function objects and closures
  9. و ...

آشنا خواهید شد.

QT5 - QML

کیوت یک فریم ورک محبوب و cross platform برای توسعه نرم افزار است. در این دوره آموزشی و در پروژه ذکر شده، ما برای توسعه GUI از فریم ورک QT استفاده خواهیم کرد و از ابزارها و تکنولوژی های مدرن این فریم ورک استفاده خواهیم کرد تا یک User Interface زیبا و سازگار با نمایشگرهای تاچ طراحی کنیم. در طول توسعه ی این پروژه شما با تکنولوژی های زیر آشنا خواهید شد.

مقدمات تکنولوژی QML:

    • QML Syntax 
    • Basic QML Elements
    • QML Components
    • Simple Transformations
    • Positioning Elements
    • Layout Items
    • Input Elements

انیمیشن و افکت های حرکتی در QML:

    • Animations 
    • States And Transitions

معرفی الگوی Model-View-Delegate در QT:

    • Concept 
    • Basic Models
    • Dynamic Views
    • Delegate

کنترل گرافیکی Canvas:

    • Convenient API 
    • Gradients
    • Shadows
    • Images
    • Transforations
    • Composition Modes
    • Pixel Buffers
    • Canvas Paint
    • Porting From HTML5 Canvas

فریم ورک QT و C++:

    • A Boilerplate Application 
    • The QObject
    • Build Systems
    • Common QT Classes
    • Models In C plus plus

توسعه QML با استفاده از C++:

    • Understanding the QML Run-Time 
    • Plugin-Content
    • Creating The Plugin
    • FileIO Implementation
    • Using FileIO

 

Test Driven Development

در طول این دوره آموزشی، شما با مفاهیم تست در نرم افزار آشنا خواهید شد، از جمله:

  • Unit Test
  • Integration Test


در توسعه پروژه مذکور برای طراحی و پیاده سازی کلاس ها از روش TDD استفاده خواهد شد و شما برای پیاده سازی بخش های مختلف نرم افزار test case های مختلفی در قالب UnitTest و Integration Test پیاده سازی خواهید کرد.


برای پیاده سازی تست ها از کتاب خانه های زیر استفاده خواهیم کرد:

  • BOOST.UnitTest
  • Mock Turtle

 

Software Architecture

معماری به کارگرفته شده در پروژه مذکور یکی از جدیدترین معماری های نرم افزار است: "Clean Architecture"

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

معماری پروژه مذکور از 4 بخش تشکیل شده است:

  • Entity
  • Business Rules
  • Adapter
  • Framework

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

Design Pattern

 همچنین در پیاده سازی کلاس ها شما با اصول Object Oriented Design(OOD) آشنا خواهید شد، همچنین در طراحی کلاس ها، از اصول SOLID استفاده خواهیم کرد و به معرفی آنها خواهیم پرداخت.

در توسعه پروژه مذکور، برای پیاده سازی بخش Database از SQLite استفاده خواهیم کرد، که در طول توسعه بخش Database شما با مفاهیم ORM و الگوهای طراحی مثل Repository Pattern آشنا خواهید شد.

OpenCV

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

segmentation

circle detection

region growing

آشنا خواهید شد.

در بخش پردازش تصویر ما از کتابخانه محبوب OpenCV استفاده خواهیم کرد، که شما با موارد زیر آشنا خواهید شد:

  • Compile OpenCV
  • Integrate QT and OpenCV
  • OpenCV Image Acquisition
  • OpenCV Hough Circle
  • و....


Gitlab

برای توسعه پروژه، از Git Version Control استفاده خواهیم کرد. که شرکت کنندگان با دستورات کاربردی این نرم افزار و مفاهیم branching در گیت آشنا خواهند شد.

همچنین برای مدیریت پروژه از سیستم Gitlab استفاده خواهیم کرد، در طول کار با سیستم Gitlab، شرکت کنندگان این دوره با مفاهیم:

Issue Tracking

Agile Development

CI (Continuous Integration)

CD (Continuous Deployment)

Software Automation

آشنا خواهند شد.

آدرس:تهران خیابان ولیعصر، خیابان بابک بهرامی، پلاک ۴۷، طبقه 4، واحد ۱۱۱