Computer-Science

01. Defining a Class

Object-Oriented Programming

๊ฐ์ฒด์ง€ํ–ฅ ์„ค๊ณ„ (object-oriented design)

ํด๋ž˜์Šค-๊ฐ์ฒด-์ธ์Šคํ„ด์Šค์˜ ์ฐจ์ด

  1. Class๋ž€?
  1. Object๋ž€?
  1. Instance๋ž€?

Reusability in OOP

Defining a Class

ํด๋ž˜์Šค ์ •์˜ (class definition)

#include <iostream>
#include <string>
using std::cout;
using std::endl;
using std::string;

class GradeBook {
public:
    //function overloading
    void displayMessage() {
        cout << "Welcome to the GradeBook" << endl;
    }
    void displayMessage(string str) {
        cout << str<< endl;
    }
};


int main() {
    GradeBook myGradeBook;
    myGradeBook.displayMessage();
    myGradeBook.displayMessage("Welcome");
    myGradeBook.displayMessage("to");
    myGradeBook.displayMessage("the");
    myGradeBook.displayMessage("GradeBook");
    return 0;
}

๋ฉค๋ฒ„ ํ•จ์ˆ˜ (member function) ์ •์˜

ํด๋ž˜์Šค ์‚ฌ์šฉ

Defining a Member Function with a Parameter

๋งค๊ฐœ๋ณ€์ˆ˜์™€ ์ธ์ˆ˜

ํ•จ์ˆ˜ ๋งค๊ฐœ๋ณ€์ˆ˜ (parameter)

: ํ•จ์ˆ˜๊ฐ€ ์—…๋ฌด๋ฅผ ์‹คํ–‰ํ•˜๋Š”๋ฐ ํ•„์š”ํ•œ ์ •๋ณด

ํ•จ์ˆ˜ ์ธ์ˆ˜ (argument)

: ํ•จ์ˆ˜์˜ ๋งค๊ฐœ ๋ณ€์ˆ˜๋ฅผ ์œ„ํ•ด ํ•จ์ˆ˜ ํ˜ธ์ถœ์‹œ ๊ณต๊ธ‰๋œ ๊ฐ’

๋งค๊ฐœ๋ณ€์ˆ˜ ๋ฆฌ์ŠคํŠธ (parameter lists)


Defining a function parameter again as a local variable in the function is a compilation error.

Data Members

์ง€์—ญ๋ณ€์ˆ˜์™€ ๋ฉค๋ฒ„๋ณ€์ˆ˜

์ง€์—ญ ๋ณ€์ˆ˜ (local variables)

๋ฉค๋ฒ„ ๋ณ€์ˆ˜ (member variables)

์ ‘๊ทผ ์ง€์ •์ž

์ ‘๊ทผ ์ง€์ •์ž private

๊ธฐํƒ€ ์ ‘๊ทผ ์ง€์ •์ž

set Functions and get Functions

์†Œํ”„ํŠธ์›จ์–ด๊ณตํ•™๊ณผ set, get ํ•จ์ˆ˜

Initializing Objects with Constructors

ํด๋ž˜์Šค ์ƒ์„ฑ์ž (constructor)

UML diagram

์ž‘์„ฑ๋ฐฉ๋ฒ•

UML์—์„œ ํด๋ž˜์Šค ์ƒ์„ฑ์ž ํ‘œ๊ธฐ

Separating .h and .cpp Files

์šฉ๋„์— ๋”ฐ๋ฅธ ํŒŒ์ผ์˜ ๋ถ„๋ฆฌ

.cpp๋Š” ์†Œ์Šค์ฝ”๋“œ ํŒŒ์ผ๋กœ ์•Œ๋ ค์ ธ ์žˆ๋‹ค.

ํ—ค๋” ํŒŒ์ผ (header files)

๋“œ๋ผ์ด๋ฒ„ ํŒŒ์ผ (driver files)

๋“œ๋ผ์ด๋ฒ„ cpp ํŒŒ์ผ ์˜ˆ์ œ
#include <iostream>
using std::cout;
using std::endl;

#include "GradeBook.h"

int main()
{
    GradeBook gradeBook1("CS101 introduction to C++ Programming");
    GradeBook gradeBook2("CS102 Data Structures in C++");

    cout << "gradeBook1 created for course: " << gradeBook1.getCourseName()
         << "\ngradeBook2 created for course: " << gradeBook2.getCourseName()
         << endl;
    return 0;
}

#include ์ „์ฒ˜๋ฆฌ๊ธฐ ์ง€์‹œ์ž

์ปดํŒŒ์ผ ๊ณผ์ •์—์„œ ํ—ค๋” ํŒŒ์ผ์˜ ์—ญํ• 

Separating Interface from Implementation

์ธํ„ฐํŽ˜์ด์Šค (interface)

๊ตฌํ˜„(implementation)๊ณผ ์ธํ„ฐํŽ˜์ด์Šค์˜ ๋ถ„๋ฆฌ

์ปดํŒŒ์ผ

Validating Data with set Functions

private ๋ฉค๋ฒ„์— ๋Œ€ํ•œ set ํ•จ์ˆ˜์˜ ์šฉ๋„