C++ 5주차
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) 방법론
구조적 프로그래밍 기법과 객체지향 프로그래밍
클래스와 객체
클래스 vs 객체 vs 인스턴스
객체는 구체적이어야 한다.(시험자주나옴)
인스턴스: 내가 지각해서 아침에 타고 온 OOO 택시
클래스: 자동차 - 객체-- > 인스턴스: 아빠가 가지고있는 차
인스턴스: 아침에 학교 올 때 탄 버스
클래스: 사람- 객체-- > 인스턴스: 이름
객체지향의 중심기술
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 자료