Procedural vs. OOP Paradigms

ู‚ุจู„ ู…ุง ู†ุจุฏุฃ ููŠ ุงุณุชุฎุฏุงู… ุงู„ู€ OOPุŒ ู„ุงุฒู… ู†ุนุฑู ุฅู† ุฃูƒุชุฑ Programming Paradigm ูƒุงู† ู…ุณุชุฎุฏู… ูˆุดุงุฆุน ู‡ูˆ ุงู„ู€ Procedural Programming.

The Procedural Approach

ุฒูŠ ู…ุง ุงุชุนุฑูู†ุง ู‚ุจู„ ูƒุฏู‡ุŒ ุงู„ู€ Procedural Programming Paradigm ุจูŠู‚ูˆู… ุฃุณุงุณุงู‹ ุนู„ู‰ ุชู†ุธูŠู… ุงู„ูƒูˆุฏ ุนู„ู‰ ุดูƒู„ ู…ุฌู…ูˆุนุฉ ู…ู†:

  • ุงู„ู€ Procedures.
  • ุฃูˆ ุงู„ู€ Functions.
  • ุฃูˆ โ€œุงู„ุฏูˆุงู„โ€.

ุงู„ู†ู‚ุทุฉ ุงู„ุฌูˆู‡ุฑูŠุฉ ู‡ู†ุง ุฅู† ุงู„ู€ Procedures ุฏูŠ ุจุชูƒูˆู† ู…ู†ูุตู„ุฉ ุชู…ุงู…ุงู‹ ุนู† ุงู„ู€ Entities (ุงู„ูƒูŠุงู†ุงุช) ุฃูˆ ุงู„ุจูŠุงู†ุงุช ุงู„ู„ูŠ ุจุชุดุชุบู„ ุนู„ูŠู‡ุง ูˆุจุชุนู…ู„ู‡ุง ู…ุนุงู„ุฌุฉ.

Data & Logic Separation

ููŠ ุงู„ู†ุธุงู… ุฏู‡:

  1. ุงู„ู€ Data (ุงู„ุจูŠุงู†ุงุช) ุจุชูƒูˆู† ู…ูˆุฌูˆุฏุฉ ููŠ ุฌู‡ุฉ.
  2. ูˆุงู„ู€ Procedures (ุงู„ุฅุฌุฑุงุกุงุช/ุงู„ู„ูˆุฌูŠูƒ) ุจุชูƒูˆู† ููŠ ุฌู‡ุฉ ุชุงู†ูŠุฉ ู…ู†ูุตู„ุฉ ุชู…ุงู…ุงู‹.
  3. ูˆุจุนุฏูŠู† ุจูŠุญุตู„ ุจูŠู†ู‡ู… ุชูุงุนู„ (Interaction) ุนุดุงู† ุงู„ุจุฑู†ุงู…ุฌ ูŠุดุชุบู„.

ูŠุนู†ูŠ ู…ููŠุด ุฑุงุจุท ู‚ูˆูŠ ุจูŠุฌู…ุนู‡ู… ููŠ ู…ูƒุงู† ูˆุงุญุฏ ุฌูˆู‡ ุงู„ูƒูˆุฏ.

The Object-Oriented Approach (Object-Oriented Programming (OOP))

ุฃู…ุง ุจุงู„ู†ุณุจุฉ ู„ู„ู…ูู‡ูˆู… ุงู„ุขุฎุฑุŒ ูˆู‡ูˆ ู…ูู‡ูˆู… ุงู„ู€ Object-Oriented Programming (OOP)ุŒ ูู‡ูˆ ุจูŠุนุชู…ุฏ ุนู„ู‰ ูู„ุณูุฉ ู…ุฎุชู„ูุฉ ุชู…ุงู…ุงู‹.

ู‡ู†ุงุŒ ุงู„ู€ Data ู‡ูŠ ุงู„ู„ูŠ ุจุชูƒูˆู† First-Class Citizen (ู…ูˆุงุทู† ู…ู† ุงู„ุฏุฑุฌุฉ ุงู„ุฃูˆู„ู‰).

The Concept of Class & Object

ููŠ ุงู„ู€ OOPุŒ ุงู„ุชุฑุชูŠุจ ุจูŠุฎุชู„ู ูƒุงู„ุชุงู„ูŠ:

  • ุงู„ู€ Data ูˆุงู„ู€ Procedures ุจูŠูƒูˆู†ูˆุง ู…ูˆุฌูˆุฏูŠู† ุนู„ู‰ ู†ูุณ ุงู„ู…ุณุชูˆู‰.
  • ุจูŠุชู… ุชุฌู…ูŠุนู‡ู… ู…ุน ุจุนุถ ููŠ โ€œุญุงูˆูŠุฉ ูˆุงุญุฏุฉโ€ ุฃูˆ โ€œุญุงุถู†ุฉ ูˆุงุญุฏุฉโ€.
  • ุงู„ุญุงุถู†ุฉ ุฏูŠ ุจู†ุณู…ูŠู‡ุง ุงู„ู€ Class.

ุจูƒู„ู…ุงุช ุฃุฎุฑู‰ุŒ ุงู„ู€ Data ุจูŠุชู… ุงู„ุชุนุงู…ู„ ู…ุนุงู‡ุง ูˆุงู„ูˆุตูˆู„ ู„ูŠู‡ุง ุนู† ุทุฑูŠู‚ ุงู„ู€ Object. ูˆูƒู„ ุงู„ู„ูŠ ุนู„ูŠู‘ ูุนู„ู‡ ูƒู…ุทูˆุฑ ุฅู†ูŠ ุฃุชุนุงู…ู„ ู…ุน ู‡ุฐุง ุงู„ู€ Object ู…ุจุงุดุฑุฉ ุนู„ุดุงู† ุฃุทุจู‚ ุงู„ู…ู†ุทู‚ (Logic) ุงู„ู„ูŠ ุฃู†ุง ู…ุญุชุงุฌ ุฃุทุจู‚ู‡ ุนู„ูŠู‡.

graph TD
    subgraph Procedural_Paradigm
        D[Global Data]
        F1[Function 1]
        F2[Function 2]
        F1 --> D
        F2 --> D
    end

    subgraph OOP_Paradigm
        subgraph Class_Container
            OD[Data]
            OM[Methods/Procedures]
            OM <--> OD
        end
    end

Notes

  • ุนู„ู‰ ุงู„ุฑุบู… ู…ู† ู‡ูŠู…ู†ุฉ ุงู„ู€ OOPุŒ ุจุณ ููŠ ุงู„ุฃู†ุธู…ุฉ ุงู„ุญุฏูŠุซุฉ (ุฎุงุตุฉ ููŠ ุงู„ู€ Game Development ูˆุงู„ู€ High Performance Computing)ุŒ ุธู‡ุฑ ู†ู…ุท ุงุณู…ู‡ Data-Oriented Design (DOD). ุงู„ู†ู…ุท ุฏู‡ ุจูŠุฑุฌุน ูŠูุตู„ ุงู„ุฏุงุชุง ุนู† ุงู„ู„ูˆุฌูŠูƒ (ุดุจู‡ ุงู„ู€ Procedural) ุนุดุงู† ูŠุญุณู† ุงุณุชุฎุฏุงู… ุงู„ู€ CPU CacheุŒ ูˆุฏู‡ ุจูŠุซุจุช ุฅู† ูƒู„ Paradigm ูˆู„ู‡ ุงุณุชุฎุฏุงู…ู‡.