<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Design, Architecture &amp; OOP on DATATWEETS</title><link>https://datatweets.com/courses/software-engineering/design-architecture-and-oop/</link><description>Recent content in Design, Architecture &amp; OOP on DATATWEETS</description><generator>Hugo</generator><language>en</language><copyright>Copyright (c) 2025 Datatweets</copyright><lastBuildDate>Sun, 05 Jul 2026 09:00:00 +0200</lastBuildDate><atom:link href="https://datatweets.com/courses/software-engineering/design-architecture-and-oop/index.xml" rel="self" type="application/rss+xml"/><item><title>Lesson 1 - Software Design and Architecture</title><link>https://datatweets.com/courses/software-engineering/design-architecture-and-oop/lesson-1-software-design-and-architecture/</link><pubDate>Sun, 05 Jul 2026 09:00:00 +0200</pubDate><guid>https://datatweets.com/courses/software-engineering/design-architecture-and-oop/lesson-1-software-design-and-architecture/</guid><description>This lesson explains the difference between architecture (the shape of the whole system) and design (the shape of one component), then walks through three concrete patterns: layered architecture, MVC, and the monolith-versus-microservices decision. Every example uses Ledgerly&amp;rsquo;s own classes — InvoiceController, InvoiceService, InvoiceRepository, and a billing service split out to handle its own scaling needs. By the end, you can explain why Ledgerly&amp;rsquo;s three-person team should stay a monolith today, and what would have to change before splitting out billing makes sense.</description></item><item><title>Lesson 2 - Object-Oriented Programming in Practice</title><link>https://datatweets.com/courses/software-engineering/design-architecture-and-oop/lesson-2-object-oriented-programming-in-practice/</link><pubDate>Sun, 05 Jul 2026 09:00:00 +0200</pubDate><guid>https://datatweets.com/courses/software-engineering/design-architecture-and-oop/lesson-2-object-oriented-programming-in-practice/</guid><description>This lesson moves past the basics of classes and objects into the OOP techniques that shape real designs: inheritance, polymorphism, and the choice between composition and inheritance. Ledgerly&amp;rsquo;s PaymentGateway family shows how StripeGateway and PayPalGateway inherit shared behavior and override the rest, and a composed Invoice class shows why building an object from smaller collaborators often beats a deep class hierarchy. Encapsulation and abstraction, covered in Module 1, get only a brief mention here.</description></item><item><title>Lesson 3 - Design Patterns I: Creational and Structural</title><link>https://datatweets.com/courses/software-engineering/design-architecture-and-oop/lesson-3-design-patterns-creational-and-structural/</link><pubDate>Sun, 05 Jul 2026 09:00:00 +0200</pubDate><guid>https://datatweets.com/courses/software-engineering/design-architecture-and-oop/lesson-3-design-patterns-creational-and-structural/</guid><description>This lesson covers six proven design patterns split into two families: creational patterns (Factory Method, Builder, Singleton) that control how objects get created, and structural patterns (Adapter, Decorator, Facade) that control how objects combine into larger pieces. Every example builds on Ledgerly&amp;rsquo;s invoicing code — picking the right PaymentGateway by name, assembling a complex Invoice step by step, wrapping a third-party SDK, and stacking discounts and late fees on a total. By the end, you can recognize each pattern&amp;rsquo;s shape and choose the right one for a given problem.</description></item><item><title>Lesson 4 - Design Patterns II: Behavioral</title><link>https://datatweets.com/courses/software-engineering/design-architecture-and-oop/lesson-4-design-patterns-behavioral/</link><pubDate>Sun, 05 Jul 2026 09:00:00 +0200</pubDate><guid>https://datatweets.com/courses/software-engineering/design-architecture-and-oop/lesson-4-design-patterns-behavioral/</guid><description>This lesson covers three behavioral design patterns using Ledgerly, a small invoicing app, as the running example. You will swap interchangeable discount rules with Strategy, notify email, SMS, and audit-log listeners with Observer when an invoice is paid, and queue reversible billing operations with Command. Every example builds directly on Ledgerly&amp;rsquo;s existing Invoice and PricingEngine classes.</description></item><item><title>Lesson 5 - Guided Project: Architecting Ledgerly's Domain</title><link>https://datatweets.com/courses/software-engineering/design-architecture-and-oop/lesson-5-guided-project-architecting-ledgerlys-domain/</link><pubDate>Sun, 05 Jul 2026 09:00:00 +0200</pubDate><guid>https://datatweets.com/courses/software-engineering/design-architecture-and-oop/lesson-5-guided-project-architecting-ledgerlys-domain/</guid><description>In this guided project you close Module 2 by taking one real Ledgerly feature, refunds, from an open design question to tested code. You decide where refund logic should live relative to billing, design a RefundPolicy class hierarchy for Stripe and bank-transfer refunds, apply the Strategy pattern so RefundService never checks a gateway name with an if-statement, and apply the Observer pattern so a customer notification and an accounting ledger entry both fire without RefundService knowing either one exists. A real Python test then proves the design by swapping in fake observers.</description></item></channel></rss>