객체 지향 프로그래밍 기초

킴스코딩클럽·2022년 11월 17일
1

CS기초 시리즈

목록 보기
51/71

OOP : object oriented programming (객체지향)

class

class MyClass
	{
    	int x;        
        void function();
    };

프로그래밍 방식(programming paradigm)

  • 어떤 프로그래밍 방식이 무조건 좋은것은 아니다

절차지향

  • 대표적으로 C언어 절차나 함수에 집중
  • 정렬을 할 때 나는 0 부터 너는 몇부터로 순서에 초점(기능에 초점)
  • 절차적 프로그래밍(procedural programmaing) : 함수를 통한 프로그래밍

OBJECT

  • 객체지향 : object로 프로그래밍(c++,java...)

  • 객체 : 대상 (사과 사람 핸드폰 ...)

  • 개체(entity)와는 다름

  • 현실에서 묘사할 수 있다면 그것을 프로그래밍의 세계로 가져와서 개념화 해보자는 것에서 출발

  • 정렬을 할 때 하나의 객체인 A가 하는 것에 초점

  • 핸드폰이 객체라고 한다면

    브랜드 - 삼성,애플 ,화웨이
    크기 - 10cm, 20cm
    무게 - 1kg...
    통화하기()
    메시징()
    통신()

  • 두 가지 카테고리를 나눌 수 있음 상태(state) 와 행동(behaviour)

  • 상태 : 변수 ->열거형도 어울림

  • 행동 : 함수

OOP Terminologies

object[객체]

  • 현실 세계의 사물을 프로그래밍화
  • state(변수) + behaviour(함수)
  • 상태(state)-> 멤버변수-> 필드(field)
  • 행동(behaviour) -> 멤버변수 -> 메서드(method)

class[클래스]

  • 객체를 표현하기 위한 설계도
  • 게임에서 쓰이는 직업의 느낌
  • 전사 클래스는 전사 클래스가 가지는 공통되는 특징이 있음
  • 객체를 표현하기 위한 설계도의 개념
  • 정보만 가지고 있으며 실존하지는 않는 것
  • 타입(type) -> int x; (정수를 저장할 수 있다는 정보가 담김)

instance[인스턴스]

  • 인스턴스 던전(인던) : 던전의 소유권을 플레이어가 가짐 사용자별로 던전을 만들 수 있는 개인화 시스템
  • 클래스를 가지고 실제로 만들어낸
  • 오브젝트(Object) : 위의 객체와 다름 메모리 공간에 이름을 붙여놓은 것

int x

  • int 타입을 저장할 수 있는 x라는 이름을 가진 객체
  • int 클래스를 x로 인스턴스화한 객체

OOP의 조건(특징)

  1. object
  2. class
  3. encapsulation(캡슐화)
    • 쉽게 사용하기 위해
    • 내부를 숨기기 위해
    • 정보은닉(information hiding)
    • class를 만들 때 상태(멤버변수)나 행동(멤버함수)을 숨기거나 공개할 수 있어야 함
  4. inheritance(상속)
    • 부모 클래스가 가진 특징을 자식 클래스가 물려받음
    • 파생(derivation) : base(기반)->derived(파생된)
    • 상속(inheritance) : parent(부모-superclass)->자식(child-subclass)
  5. polymorphism(다형성)
    • 상황에 따라 부모 클래스나 자식 클래스로 해석 가능한
    • 모든 사람은 포유류이다 하지만 모든 포유류는 사람이 아니다

기타

객체가 스스로 라이프사이클을 관리하기 위한 것

1.constructor (생성자) : 객체가 만들어 질 때 사용되는
2.destructor (소멸자) :객체가 사라질 떄 사용되는

static Member

static : 한 번 만들어지면 프로그램 종료까지 살아 있는
static member : 클래스에 들어가는 변수 시스템

abstract class

  1. 선언만 있는 클래스
  2. 인터페이스와 관련있는 개념
  3. 규격을 만들어냄
  4. api / ui / gdi / hdmi(hi-definition multi-media interface) / usb도 인터페이스 개념
  5. ui : 프로그램과 유저 사이의 정해진 약속

overloading vs overriding

  1. overloading(중복적재)
    매개변수만 다르게해서 여러개의 행동을 만듦
  2. overriding(재정의)
    부모의 행동을 자식이 재정의
  3. operator overloading

문법

class->instance를 만들기
타입->오브젝트 만들기

class 선언

class<클래스이름>
{
	[접근제한자]//[]는 생략이 가능하다라는 뜻
    <멤버>
    .
   	.
    .
}[객체이름];
_____________________________________________
class Smartphone 
{
    //상태(member variables)
    char *brand;
    int width;
    int height;
    //행동(member functions)
    void Call(int number);
    void Message(int number);
};
int main()
{
    Smartphone galaxy22;
    Smartphone iphone14;
    //int x; 와 같은 느낌
    //타입대신에 직접 만들어낸것 + 구체적인사례(인스턴스)를 만듬
}
  • 접근 제한자(access Modifier)

    1. public
      클래스 내부/외부에서 모두 접근이 가능
    2. private
      클래스 내부에서만 접근이 가능
      숨기는 것이 기본값
      클래스 내부 : 클래스 멤버 함수의 정의
    3. protected(상속)
  • 클래스와 인스턴스
    smartphone(클래스) galaxy(인스턴스)

  • 범위 해결 연산자 ::
    멤버함수 시그니처
    클래스 :: 멤버함수( )

  • 인스턴스에 대한 암시적 객체(implicit object)
    this (포인터임)

  • Naming Rule
    클래스 이름 : 파스칼 표기법(MyCat,SmartPhone)
    멤버 변수 : m을 붙여서 멤버라는 것을 명시(mWidth,mHeight)
    멤버 함수 : 파스칼 표기법
    DoSomething(),Attack()
    언리얼 문서나 c++ 문서보기

visual studio 클래스 추가 하기로 헤더파일+cpp파일 조합을 완성할 수 있음

profile
공부 기록용

0개의 댓글