SA성아 2023. 10. 11. 12:48

C++ 기본 소스

#include <iostream>

int main()
{
    std::cout << "Hello World!\n";
}

 


구조체


구조체 기초

#include <iostream>

struct Man {
    int age;    //멤버
    double weight;
};

int main()
{
    struct Man park;	//.cpp소스로 저장을 하면 struct는 생략해도 된다.
    park.age = 1;
    park.weight = 3.5;

    std::cout << park.age << " " << park.weight;
}
#include <iostream>

struct Man {
    int age;    //멤버
    double weight;

    int getAge() { return age; }//멤버함수
    void setAge(int a) { age = a; } //C언어에서는 변수만 넣을 수 있는데 C++에서는 함수도 넣을 수 있다.(매년시험에냄)

};

int main()
{
    Man park;   //.cpp소스로 저장을 하면 struct는 생략해도 된다.
    park.age = 1;
    park.weight = 3.5;

    std::cout << park.age << " " << park.weight;
}

 

구조체 멤버의 참조와 연산

.을 찍을때와 ->를 찍을 때의 차이점(시험자주나옴)

struct Man minsu; // 일반 변수 선언
struct Man* minjung; // 포인터 변수 선언
minsu.age = 13;
//일반 변수는 멤버를 "."으로 접근
minjung->age = 7;
//포인터 변수는 멤버를 "->"로 접근
#include <iostream>

struct Man {
    int age;    //멤버
    double weight;

    int getAge() { return age; }//멤버함수
    void setAge(int a) { age = a; } //C언어에서는 변수만 넣을 수 있는데 C++에서는 함수도 넣을 수 있다.

};

int main()
{
    Man park;   //.cpp소스로 저장을 하면 struct는 생략해도 된다.

    Man* lee;   //lee는 포인터이기 때문에 ->(화살표)를 이용한다.
    lee->age = 40;
    std::cout << lee->age;

    park.age = 1;
    park.weight = 3.5;

    std::cout << park.age << " " << park.weight;
}

 

구조체의 초기값

#include <iostream>

struct Man {
    int age;    //멤버
    double weight;
};

int main()
{
    Man park = { 1, 3.5 };   //초기값을 줄 때는 { } 열고 닫기로 준다.
    std::cout << park.age << " " << park.weight << std::endl;

    park.age = 10;
    park.weight = 30.5;
    std::cout << park.age << " " << park.weight << std::endl;
}

 


객체지향 프로그래밍


객체지향 프로그래밍 등장 배경

 

 

대응방안: 다양한 소프트웨어 공학 기법을 적극적으로 활용하는 것이 해결책이 될 수 있다.

 

구조적 프로그래밍 스타일(C언어)

structured programming

구조적 프로그래밍(structured programming) 방법론

객체지향 프로그래밍(OOP)

 

구조적 프로그래밍 기법과 객체지향 프로그래밍

클래스와 객체

클래스: 틀(설계도) / 객체 혹은 인스턴스(instance): 설계도로 만들어진 집

 

클래스 vs 객체 vs 인스턴스

클래스로부터 만들어진 객체를 인스턴스라고 한다.

객체는 구체적이어야 한다.(시험자주나옴)                                          

                                         인스턴스: 내가 지각해서 아침에 타고 온 OOO 택시

클래스: 자동차  - 객체-- > 인스턴스: 아빠가 가지고있는 차

                                         인스턴스: 아침에 학교 올 때 탄 버스

 

클래스: 사람- 객체-- > 인스턴스: 이름

 

객체지향의 중심기술

객체지향의 3가지 특징(시험자주나옴)

ADT :  추상 자료형

캡슐화

상속 (inheritance)

파생 클래스가 기본 클래스의 정의된 속성(자료 및 연산)을 상속받는 것 

          파생 클래스(derived class), 자식 클래스(child class, subclass) : 상위 클래스의 속성을 상속받은 하위 클래스

          기본 클래스(base class), 부모 클래스(parent class, superclass) : 상위 클래스

 

다양성(polymorphism)

이름을 하나만 쓴다.

 

클래스 다이어그램

세개의 네모에다가 그림

고양이 클래스 다이어그램

 

클래스

#include <iostream>

class Man {
            //public: 을 쓰게 되면 밑에 있는 변수들은 어디에서나 접근할 수 있다.
private:    //private: 을 쓰게 되면 클래스 안에서만 접근할 수 있다.
    int age;    //멤버
    double weight;

public:
    int getAge() {  //출력, 리턴
        return age;
    }
    void setAge(int a) {  //입력, 대입
        age = a;
    }
};

int main()
{
    Man park;
    park.setAge(3);
    std::cout << park.getAge() << std::endl;
}
#include <iostream>

class Man {
            //public: 을 쓰게 되면 밑에 있는 변수들은 어디에서나 접근할 수 있다.
private:    //private: 을 쓰게 되면 클래스 안에서만 접근할 수 있다.
    int age;    //멤버
    double weight;

public:
    int getAge() {  //출력, 리턴
        return age;
    }
    void setAge(int a) {  //입력, 대입
        age = a;
    }

    double getWeight() {
        return weight;
    }

    void setWeight(double b) {
        weight = b;
    }
};

int main()
{
    Man park;
    park.setAge(3);
    park.setWeight(10.5);
    std::cout << park.getAge() << " " << park.getWeight() << std::endl;
}

출처: C++ 프로그래밍 ppt 자료