프로그래밍 공부

전체 글 700

카테고리 설명
프로그래밍 공부하는 블로그
  • Class는 객체지향 프로그래밍(OOP)에서 사용되는 구조체의 한 종류로 Clas는 데이터와 함수를 함꼐 묶어서 사용할 수 있도록 해주며, 객체를 생성하여 사용할 수 있다. Class의 장점 캡슐화(Encapsulation) 데이터와 관련된 함수를 하나로 묶어서 외부에서 함부로 접근하지 못하게 해 데이터의 손상을 방지하고 코드의 동작성을 보장한다. 상속성(Inheritance) 다른 클래스로부터 기존 함수와 데이터를 물려받아 사용할 수 있으며, 코드의 재사용성을 높인다. 다형성(Polymorphism) 같은 이름의 함수를 다양한 방법으로 사용할 수 있다. 유지보수성(Maintainability) Class는 코드의 재사용성과 가독성을 높여 유지보수가 용이하다. Class의 단점 구현의 복잡성 (Imple..

  • 객체지향적 프로그래밍은 4가지 특징이 있다. 때로는 5가지 특징이 있다고 하는데, 캡슐화에서 다른 한가지 특징이 자동적으로 파생되어 나옴으로 4대특징이라 해도 무방하고 5대 특징이라고 해도 무방하다. 객체지향의 4대 특징은 다음과 같다. 추상화 (Abstraction) 어떠한 특성만을 가지고서 재조합 하는것을 뜻한다. 이는 프로그램에서 필요한 부분만 외부에 노출시키고 필요없는 부분을 감춤으로써, 프로그램 내부의 객체 구현방법을 몰라도 사용할 수 있도록 해준다. 그리하여 객체별 프로그래밍이 가능해지고 이는 대규모 프로젝트 에서의 효율적인 작업을 야기한다. 캡슐화 (Encapsulation) [ 여기에서 정보은닉 (Information hiding)이 파생된다. ] 객체의 속성이나 동작들을 클래스로 묶는것을..

  • 프로그래밍을 할 떄 객체 지향적인 프로그래밍을 하는 방법을 이야기한다. 코드의 재사용성이 높고 유지보수가 쉬우며, 대규모 프로젝트에 적합하다. 장점 : 코드의 재사용성이 높고 유지보수가 쉽다. 대규모 프로젝트에 적합하다. 단점 : 구현이 복잡하고 이해하기 어렵다. 사용하는 언어 : Java, C++, Python 등

  • 프로그램을 작성하는데에 절차 중심적인 방법을 사용하는 프로그래밍 방법이다. 복잡하지 않은 작은 규모의 프로그램을 작성하기 적합하고, 구현이 간단하며 이해하기가 쉽다. 장점 : 구현이 간단하고 이해하기 쉽다. 단점 : 코드의 재사용성이 낮고 유지보수가 어렵다. 사용하는 언어 : C, Fortaran 등. 일반적으로 사용하는 C언어의 프로그래밍 방법을 이야기한다. 위와 같은 식으로 Class 같이 객체 구분을 하지 않은 코딩을 말한다.

  • C++에서는 함수 오버로딩 을 허용한다. 그러나, 함수 오버로딩을 사용하지 않고도 비슷하게 사용할 수 있는 기능이 있다. 이를 template이라고 한다. 다음은 오버로딩 을 하지 않고도 template를 사용하는 예시이다. C++에서는 오류 검출을 위한 assert를 지원한다. 자세한 설명은 링크를 참조. C++에서는 functional 방식을 지원한다 자세한 설명은 링크를 참조. C++에서는 가변인자 함수 형식을 지원한다. 자세한 설명은 링크를 참조. C++과 C,JAVA등 프로그래밍의 대부분 종류는 POP와 OOP로 구성되어있다. 프로그래밍 패러다임.(Programming Paradigm) 이라고 한다. OOP 프로그래밍은 객체지향적 프로그래밍 이기 때문에 4가지 특징을 가지게 된다. 자세한 설명은..

  • C++에서는 가변함수라는 강력한 임의 매개변수를 받을 수 있는 방법을 제공한다. 가변함수는, 매개변수의 숫자가 정해지지 않은 함수 를 의미한다. 이는, 고정적인 매개변수의 숫자가 아닌 전체 매개변수의 숫자를 셈 하여 메모리가 허용하는 한 무한한 매개변수를 받아서 연산할 수 있다는 의미이다. 가변 함수를 사용하기 위해 사용하는 라이브러리는 #include 를 사용하고, va_list 가변인자 목록을 나타내는 타입으로 받아온 모든 매개변수를 배열로 받아와서 처리한다. va_start va_list타입의 변수와 가변인자의 마지막 인자 이전의 인자의 위치값을 받아온다. 그 후 초기화 작업을 진행해준다. va_arg 가변인자 목록에서 값을 가져오는 함수로, va_list 타입의 변수와 가져올 값의 타입을 전달받는..

작성일
2023. 4. 22. 03:09
작성자
WDmil
728x90

Class는 객체지향 프로그래밍(OOP)에서 사용되는 구조체의 한 종류로 Clas는 데이터와 함수를 함꼐 묶어서 사용할 수 있도록 해주며, 객체를 생성하여 사용할 수 있다.


Class의 장점

  • 캡슐화(Encapsulation)
    • 데이터와 관련된 함수를 하나로 묶어서 외부에서 함부로 접근하지 못하게 해 데이터의 손상을 방지하고 코드의 동작성을 보장한다.
  • 상속성(Inheritance)
    • 다른 클래스로부터 기존 함수와 데이터를 물려받아 사용할 수 있으며, 코드의 재사용성을 높인다.
  • 다형성(Polymorphism)
    • 같은 이름의 함수를 다양한 방법으로 사용할 수 있다.
  • 유지보수성(Maintainability)
    • Class는 코드의 재사용성과 가독성을 높여 유지보수가 용이하다.

Class의 단점

  • 구현의 복잡성 (Implementation complexity) 
    • 구조체의 구현이 복잡하고 코드가 쓸때없이 길어질 수 있다.
  • 오버헤드(Overhead)
    • 구조체에 비해 메모리 사용량이 많아질 수 있다.

Class를 사용해야 하는 이유

  • 대규모 프로젝트에 적합
    • Class는 캡슐화와 상속성 등으로 객체지향의 4대특징을 따름으로 그로써 대규모 프로젝트에 적합하다.
  • 코드의 재사용성
    • Class는 구조체보다 높은 코드 재사용성을 제공한다.
  • 유지보수 용이
    • Class는 코드의 가독성이 높아 유지보수에 용이하다.

Class를 사용한 예시는 다음과 같다.

위와같이 pirvate에 저장될 변수들을 지정해주고 public에 변수에 접근할 수 있는 함수를 제공하여. 변수에 직접접근하는 것을 막는다.

 

728x90
작성일
2023. 4. 22. 02:56
작성자
WDmil
728x90

객체지향적 프로그래밍은 4가지 특징이 있다.

 

때로는 5가지 특징이 있다고 하는데, 캡슐화에서 다른 한가지 특징이 자동적으로 파생되어 나옴으로 4대특징이라 해도 무방하고 5대 특징이라고 해도 무방하다.

 

객체지향의 4대 특징은 다음과 같다.

  • 추상화 (Abstraction)
    • 어떠한 특성만을 가지고서 재조합 하는것을 뜻한다.
    • 이는 프로그램에서 필요한 부분만 외부에 노출시키고 필요없는 부분을 감춤으로써, 프로그램 내부의 객체 구현방법을 몰라도 사용할 수 있도록 해준다. 그리하여 객체별 프로그래밍이 가능해지고 이는 대규모 프로젝트 에서의 효율적인 작업을 야기한다.
  • 캡슐화 (Encapsulation) [ 여기에서 정보은닉 (Information hiding)이 파생된다. ]
    • 객체의 속성이나 동작들을 클래스로 묶는것을 통칭한다. 이는 사람별, 음식별, 동작별 등의 특정한 행위와 특정 물체 등 하나의 객체별로 동작사항을 묶어서 나타내는것을 말한다.
    • 캡슐화 를 함 으로써 함수들을 객체별로 묶어 다루게되고, 이는 외부에서 필요한 데이터만 접근할 수 있도록 제한 한다는 것을 말한다. 이로써 프로그레머는 필요한 데이터만 접근시키고 필요없는 변수는 접근을 제한하여 안정적인 프로그램의 동작을 보장하고. 외부에서 다룰 수 있는 데이터는 변조하더라도 내부 프로그래밍 동작은 영향을 받지 않게된다.
    • 또한 캡슐화 를 함으로써 프로그램의 내부구조를 몰라도 구동시킬수 있게 되어 외부에서 함부로 내부코드로 접근할 수 없게 만들 수 있다. 이렇게 하여 내부구조를 모르게 제한할 수 있어 정보은닉 이 파생되는것이다. 말 그대로 정보를 은닉한다. 라고 생각하면 된다.
  • 상속성 (Inheritance)
    • 상위클레스의 속성이나 기능을 물려받는 하위 클레스를 이야기한다. 재사용과 확장에 관련이 있다.
    • 즉, 기존 클래스를 사용하여 새로운 클래스를 만들 수 있게 하고. 새로운 클래스는 기존 클래스의 속성과 메소드를 그대로 물려받을 수 있어 코드의 재사용성을 높이는 결과를 보인다. 상속성을 이용하면 기존 클래스를 수정하지 않고도 새로운 클래스를 만들 수 있으며. 이는 유지보수성을 높이는 결과로 이어진다.
  • 다형성 (Polymorphism)
    • 하나의 객체가 여러가지 자료형을 가질 수 있는것 을 다형성 이라고 한다.
    • 다형성을 이용하면 객체의 타입에 관계없이 같은 이름의 함수를 호출 할 수 있으며. 코드의 가독성을 높인다. 다형성은 상속성과 함꼐 사용되어 객체타입에 따라 다른 함수가 호출되도록 한다.

이런 객체지향의 4가지 특징은 코드의 재사용성, 유지보수성을 높이고 대규모 프로젝트에서의 개발과 유지보수를 용이하게 하는 효과가 있다.

728x90
작성일
2023. 4. 22. 01:06
작성자
WDmil
728x90

프로그래밍을 할 떄 객체 지향적인 프로그래밍을 하는 방법을 이야기한다.

 

코드의 재사용성이 높고 유지보수가 쉬우며, 대규모 프로젝트에 적합하다.

 

  • 장점 : 코드의 재사용성이 높고 유지보수가 쉽다. 대규모 프로젝트에 적합하다.
  • 단점 : 구현이 복잡하고 이해하기 어렵다.
  • 사용하는 언어 : Java, C++, Python 등

객체위주로 나눈 코딩을 객체지향적인 코드 라고 한다.

728x90
작성일
2023. 4. 22. 00:41
작성자
WDmil
728x90

프로그램을 작성하는데에 절차 중심적인 방법을 사용하는 프로그래밍 방법이다.

 

복잡하지 않은 작은 규모의 프로그램을 작성하기 적합하고, 구현이 간단하며 이해하기가 쉽다.

 

  • 장점 : 구현이 간단하고 이해하기 쉽다.
  • 단점 : 코드의 재사용성이 낮고 유지보수가 어렵다.
  • 사용하는 언어 : C, Fortaran 등.

일반적으로 사용하는 C언어의 프로그래밍 방법을 이야기한다.

위와 같은 식으로 Class 같이 객체 구분을 하지 않은 코딩을 말한다.

728x90
작성일
2023. 4. 20. 22:13
작성자
WDmil
728x90

C++에서는 함수 오버로딩 을 허용한다.

그러나, 함수 오버로딩을 사용하지 않고도 비슷하게 사용할 수 있는 기능이 있다. 이를 template이라고 한다.

 

다음은 오버로딩 을 하지 않고도 template를 사용하는 예시이다.


C++에서는 오류 검출을 위한 assert를 지원한다.

자세한 설명은 링크를 참조.

 


C++에서는 functional 방식을 지원한다

자세한 설명은 링크를 참조.


C++에서는 가변인자 함수 형식을 지원한다.

자세한 설명은 링크를 참조.


C++과 C,JAVA등 프로그래밍의 대부분 종류는 POPOOP로 구성되어있다.

프로그래밍 패러다임.(Programming Paradigm) 이라고 한다.

OOP 프로그래밍은 객체지향적 프로그래밍 이기 때문에 4가지 특징을 가지게 된다.

자세한 설명은 링크를 참조

728x90
작성일
2023. 4. 20. 22:09
작성자
WDmil
728x90

C++에서는 가변함수라는 강력한 임의 매개변수를 받을 수 있는 방법을 제공한다.

 

가변함수는, 매개변수의 숫자가 정해지지 않은 함수 를 의미한다.

 

이는, 고정적인 매개변수의 숫자가 아닌 전체 매개변수의 숫자를 셈 하여 메모리가 허용하는 한 무한한 매개변수를 받아서 연산할 수 있다는 의미이다.

 

가변 함수를 사용하기 위해 사용하는 라이브러리는

#include <stdarg> 를 사용하고,

 

  • va_list
    • 가변인자 목록을 나타내는 타입으로 받아온 모든 매개변수를 배열로 받아와서 처리한다.
  • va_start
    • va_list타입의 변수와 가변인자의 마지막 인자 이전의 인자의 위치값을 받아온다. 그 후 초기화 작업을 진행해준다.
  • va_arg
    • 가변인자 목록에서 값을 가져오는 함수로, va_list 타입의 변수와 가져올 값의 타입을 전달받는다. va_arg 함수는 va_lsit 변수에서 내부 count를 사용하여 한개씩 배열을 넘기면서 주소값을 가져온다.
  • va_end
    • 가변함수가 종료될 때 호출하는 함수로, va_list타입의 변수를 전달받은 뒤 메모리를 전부 날려준다. free와 delete와 동작은 같다.

 

를 가변함수 내부에 넣는다.

 

다음 코드 예시를 통해 살펴보자.

다음 코드에서는, 가변인자를 받아서 받은 인수를 전부 더해주는 함수이다.

 

11번째 줄에서는 va_list를 통해 lists 이라는 이름의 동적배열을 하나 생성해준다.

12번째 줄에서는 va_list 타입인 lists 를 받아오고, count를 통해 최대배열사이즈 를 받아온다.

 

15번째 줄에서는 va_arg 가 va_list타입인 lists를 받아오고 현재 위치의 형식을 받아온다. 배열에 가져온 데이터타입은 int 이기 때문에, int가 들어갔다. 그 후 출력해온 배열을 sum에 중첩덧샘한다.

 

18번째 줄은 lists의 사용이 종료되었음으로 동적메모리를 반환해준다.

 

다음은 출력이다.

출력값을 잘 보면 2 3 2 인데,

이는 전채 배열의 최대값이 3 으로 들어갔기 때문에, 1와 2와 3만이 더해져서 평균이 도출되었기 때문이다.

배열의 최대값이 인수의 전체값보다 적게되면 매개변수가 전부 사용되지 않을 수 있음으로 사용에 유의가 필요하다.

728x90