C++

C++ 6주차 강의 내용

wlsn 2024. 10. 8. 13:47
1 자바 (Java) 플랫폼 독립성과 대규모 시스템 개발에 적합.
2 C++ 성능과 유연성을 갖춘 고급 언어.
3 파이썬 (Python) 간결한 문법과 다양한 라이브러리로 인기.
4 C# .NET 플랫폼에서 주로 사용되는 언어.
5 자바스크립트 (JavaScript) 웹 개발에서 필수적인 언어.
6 루비 (Ruby) 웹 애플리케이션 개발에 강점을 가진 언어.
7 스위프트 (Swift) iOS 및 macOS 개발에 사용되는 언어.

 

객체지향 언어를 가장 많이 사용하는 순서대로 정리한 것이다.

상황에 따라 달라질 수 있지만 비슷하다고 볼 수 있다.

 

구조적 프로그래밍 방법론. 각 소스마다 구역을 나눠 틀린 부분을 찾기 쉽지만 단점들이 더 많다.

 

 

 

C++의 초기 이름은 C with classes 였다.

C의 문법을 모두 포함하고, 개선한 언어다.

 

객체지향의 4가지 특징.

캡슐화, 추상화, 상속, 다형성으로 4가지로 나눌 수 있다.

 

객체지향 프로그래밍에서는 자료와 처리동작이 묶음으로 진행된다.

 

  1. 클래스 (Class):
    • 클래스는 객체를 생성하기 위한 설계도 또는 청사진입니다.
    • 속성과 메소드를 정의하여, 어떤 객체가 어떻게 행동할지를 설명합니다.
    • 예를 들어, 자동차라는 클래스를 정의하면, 이 클래스는 자동차의 속성(색상, 모델, 속도 등)과 메소드(주행, 정지 등)를 포함할 수 있습니다.
  2. 객체 (Object):
    • 객체는 클래스로부터 생성된 실체입니다.
    • 클래스에서 정의한 속성과 메소드를 가진 구체적인 사례입니다.
    • 예를 들어, 내 자동차라는 객체는 자동차 클래스의 인스턴스이며, 특정 색상과 모델을 가지고 있습니다.
  3. 인스턴스 (Instance):
    • 인스턴스는 클래스의 구체적인 객체를 가리키는 용어로, 클래스의 구체화된 형태입니다.
    • 클래스에서 생성된 모든 객체는 그 클래스의 인스턴스입니다.
    • 따라서, 내 자동차는 자동차 클래스의 인스턴스입니다.

 

클래스는 유일하게 값을 넣을 수 있는 것을 의미한다.

  • 클래스는 붕어빵 틀로서, 기본적인 형태와 속성을 정의합니다.
  • 객체는 그 틀로 만들어진 붕어빵으로, 여러 가지 맛이나 종류가 있을 수 있습니다.
  • 인스턴스는 초코붕어빵 같은 특정한 객체를 의미합니다. 즉, 초코붕어빵은 붕어빵이라는 클래스의 인스턴스인 셈이죠.

그래서 클래스가 붕어빵의 설계도라면, 초코붕어빵은 그 설계도를 바탕으로 만들어진 특정한 제품이라고 할 수 있습니다.

 

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

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

다형성은 이름을 하나만 쓴다.

 

자동차(클래스이름)

ㅡㅡㅡㅡㅡㅡㅡㅡㅡ

문(특성, 멤버 변수)

핸들

바퀴

의자

ㅡㅡㅡㅡㅡㅡㅡㅡㅡ

움직인다(행위, 멤버 함수)

정차한다

감속한다

 

이름,멤버변수,멤버함수 순으로 작성한다.

 

고양이(클래스이름)

ㅡㅡㅡㅡㅡㅡㅡㅡㅡ

발톱(특성, 멤버 변수)

눈 색

털 색

품종

나이

ㅡㅡㅡㅡㅡㅡㅡㅡㅡ

나이에 맞는 행위(행위, 멤버 함수)

발톱으로 물건을 떨군다

털이 뽑힌다

 

등으로 정리 할 수 있다.

 

Swift, Delphi는 Property, Method

JAVA, C#은 Field, Method

C++은 멤버변수(Member variable), 멤버함수(Member function)

 

위 사진과 같이 class에서 정해진 변수는 다른 곳에서 맘대로 바꿀 수 없다.

비유를 하자면 붕어빵 틀을 반죽으로 바꿀 수 없는것과 마찬가지다.

 

private을 주석처리하고 public을 넣는다면 정상적으로 작동한다.

 

public을 주석처리한다면 class안에 있는것이 전부 사용이 안된다.

사실상 private이 자동적으로 써져있는 셈.

 

class의 형태는 private가 켜져있는 형태지만, 구조체의 형태는 public이 자동적으로 켜져있는 셈이다.

Class에서는 변수 뿐만이 아니라 함수도 작성이 가능하다.

 

C언어에서 구조체는 멤버변수만 넣을 수 있다.

C++언어에서는 멤버함수까지도 넣을 수 있다.

 

C++은 함수까지 관리할 수 있기때문에 C보다 훨씬 편하게 사용 할 수 있다.

 

접근제어 속성을 생략한다면 struct - public, class - private이 기본형이다.

 

C언어에서는 struct Man형에서 main부분에서 다시 struct Man형을 써야하지만

C++언어에서는 struct Man 이후 Man만 써도 그대로 유지가 된다.

 

구조체에 변수들을 대입한다면 멤버들이 전부 복사가 된다.

 

구조체와 클래스를 사용하는 결정적 차이점

  1. 접근 제어 (Access Control):
    • 구조체: 기본적으로 모든 멤버가 public입니다. 따라서 외부에서 접근이 가능합니다.
    • 클래스: 기본적으로 모든 멤버가 private입니다. 따라서 외부에서 접근하려면 명시적으로 접근 제어자를 설정해야 합니다.
  2. 목적:
    • 구조체: 주로 데이터 그룹을 묶는 데 사용되며, 간단한 데이터 구조를 정의할 때 유용합니다.
    • 클래스: 객체지향 프로그래밍을 위한 더 복잡한 데이터와 기능을 포함할 수 있습니다. 메소드와 캡슐화를 통해 데이터 보호와 관련된 로직을 정의할 수 있습니다.
  3. 상속:
    • 클래스는 상속을 통해 다른 클래스를 기반으로 새로운 클래스를 만들 수 있으며, 구조체도 상속이 가능하지만, 일반적으로 클래스에서 더 많이 사용됩니다.
  4. 기본 값:
    • 구조체는 기본적으로 public이므로, 간단한 데이터 전송이나 저장에 적합합니다.
    • 클래스는 기본적으로 private이므로, 데이터 은닉과 보호가 필요할 때 적합합니다.

결론

  • 구조체는 간단한 데이터 구조를 정의할 때 사용하고,
  • 클래스는 복잡한 데이터와 기능을 포함하고, 데이터 은닉 및 캡슐화를 필요로 할 때 사용합니다.

 

데이터의 묶음으로 볼때는 구조체로 쓸 수 도 있다.

대부분의 프로그램에서는 클래스를 쓴다고 볼 수 있다.

'C++' 카테고리의 다른 글

7주차 강의 내용  (0) 2024.10.15
C++ 7주차 예습과제  (0) 2024.10.14
C++ 6주차 예습과제  (0) 2024.10.07
C++ 5주차 강의 내용  (0) 2024.10.01
C++ 4주차 강의 내용  (0) 2024.09.24