프로그래밍 공부

프로그래밍 700

카테고리 설명
  • 객체지향의 설계원칙은 객체지향 프로그래밍에서 가장 중요한 코드의 유연성과 확장성 을 높이기 위해 만들어졌다. 코드의 유연성과 확장성을 높이기 위해 코드의 구조를 명확하게 설계해야 하고, 각 클래스와 모듈 간 관계를 잘 조절해야 하기 떄문에 만들어졌고.. 이를 따르면 코드의 중복을 최소화하고 의존성을 추상화하여 코드의 결합도를 낮출 수 있다. 또한, SOLID 원칙은 객체지향 설계의 기본 원리들을 추상화 하여 코드를 더욱 일관성 있고 예측 가능하게 만들어준다. 즉, SOLID 원칙은 코드의 유지보수성, 확장성, 재사용성, 가독성, 유연성 등을 높여주는 효과가 있다. 그럼으로, SOLID 원칙은 객체지향 개발에서 반드시 따라야할 중요한 가이드라인 이라고 할 수 있다. 이러한 SOLID 원칙은 다음과 같다. ..

  • Class의 함수는 헤더와 cpp로 분리하여 사용할 수 있다. 위와 같이 헤더에는 선언된 함수의이름과 반환형을 선언해주고. cpp에는 해당 함수가 동작하는 동작문을 같은 이름으로, Class의 이름과 함께 선언해주면 된다. 위 13번 문단을 해석해보면, Calcu값을 리턴으로 돌려주는, Calcu라는 Class에 속한 Sub라는 함수가 int형의 value매개변수를 받아서 동작한다. 라는 뜻이다. 또한, 헤더 에서 cpp로 함수명을 가져올 때 에는 inline이 선언된 것과 같은 효과를 가지는데, 일반적인 함수에 비해 실행속도에 더 큰 이득이 있다. 상수화 시킨 Class에서 어떠한 변수를 수정해야할 경우 mutable 을 사용한다. 만약의 상황에서 cosnt 선언된 것이 변환되어야 할 경우 사용할 수 ..

  • mutable은 C++에서 클래스멤버 변수 중 상수멤버 함수 내에 값이 변경될 수 있는 변수를 나타내는 키워드 이다. mutable  키워드가 멤버 변수 선언 앞에 붙으면, 이 멤버 변수는 const로 선언되어도, 상수 멤버 함수 내에서 변경될 수 있다. 장점const 함수 내에서 변경되는 변수를 표현할 수 있다.멤버 변수의 값을 상수 멤버 함수에서 변경해야 하는 경우. 매우 쉬운 해결책으로 사용할 수 있다.단점mutable을 남용하면 코드의 가독성을 떨어뜨릴 수 있다. 객체의 상태를 변경하는 변수를 나타냄으로, 과도한 사용은 코드를 난잡하게 만들기 때문.다음은 mutalbe을 사용한 예시이다.다음과 같이 선언된것의 , private으로 선언된 부분인 mutable int mutable_variable은..

  • Inline 은 C++에서 선언된 함수가 인라인 함수 임을 컴파일러에 알리는 역할을 한다. inline 키워드가 함수 선언 앞에 붙으면, 컴파일러는 그 함수를 인라인 함수로 취급한다. 컴파일러가 해당 함수를 호출하는 코드를( 일반적으로 함수를 호출할 때 에는 오버헤드가 발생하여 메모리를 끌어다 쓴다 ) 그 함수의 코드 본문으로 대체하도록 한다. 즉, 함수를 호출하는것 이 아니라 애초에 그 함수의 원문이 같이 코드에 삽입되서 돌아가도록 만들어버린다. 장점 함수 호출의 오버헤드가 사라져서 빠른 실행이 가능하다. 함수 호출 대신 코드의 복사가 일어남으로 함수호출로 인한 스택 메모리 사용량도 줄어든다. 일반 함수보다 약간 더 빠른 속도를 보장한다. 단점 코드의 크기가 커지는 단점이 있다 함수를 인라인으로 전환하..

  • 생성자는 객체가 생성될 때 호출되는 함수이다. 생성자 함수는 클래스의 맴버 변수를 초기화하거나 객체가 생서오디 ㄹ떄 수행되어야 하는 기타 작업을 수행한다. 생성자 함수의 이름은 클래스의 이름과 동일하며, 반환형식은 존재하지 않는다 생성자는 클래스의 모든 객체에 대해 한 번만 호출된다. 장점 생성자의 가장 큰 장점은 클래스의 멤버 변수를 초기화 할수 있다는 것 이다. 생성자를 사용하면 프로그래머는 변수를 초기화하기 위해 별도의 초기화 함수를 호출할 필요가 없어진다. 생성자는 객체가 생성될 때 자동으로 호출됨으로 객체가 항상 초기화된 상태로 시작된다. 단점 클래스의 구현을 복잡하게 만들 수 있다. 객체가 생성될 떄 항상 호출됨으로 객체 생성시간이 느려질 수 있다. 생성자에서 수행되는 작업이 많아질수록 객체 ..

  • C++에서는 Class 기능을 지원한다. 이것은 객체지향형 프로그래밍의 첫 단추로써 중요하다 할 수 있다. Class는 기본적으로 C에서 사용하던 Struct와 크게 다르지 않으며, C++에서 넘어오면서 Struct의 불편함을 수정하는 형태로 Class가 만들어졌다. Clss로 묶는것 자체가 캡슐화 한다. 라고 볼 수 있다. 다음은 Class의 기본 예시이다. class 기반의 프로그래밍은 객체지향이기 때문에, 절차형과 다르게 private코드는 그자리에서 내부처리만 되게 만들어야 한다. 오버헤드가 발생하여 코드의 처리속도가 많이 느려질 수 있지만, 오류를 줄이는것을 더 중요하게 여기는것이 객체지향 프로그래밍의 원칙이다. 다음은 객체지향 프로그래밍의 예시이다. 위 코드에서 class 코드의 위쪽 38 ~..