개발 이야기

Computer-이론/OOP

캡슐화 (2020.09.23)

목차 캡슐화 / Encapsulation 캡슐화는 데이터와 행위를 묶어 객체라는 형태로 만드는 것을 말한다. 앞서 말했던, 객체의 정의와 같다고 생각할 수 있다. 하지만, 캡슐화는 묶는 과정에서 속성(attribute), 메서드(method)를 외부로부터 감출 것인지, 공개할 것인지 설정할 수 있다는 것이 핵심이다. 바로 '데이터 은닉'기법이다. 데이터 은닉을 통해 감춰진 속성, 메서드는 외부에서는 접근할 수 없으며, 객체내부에서만 수정, 사용할 수 있다. 곡개하는 속성, 메서드는 'public' 접두어를, 비공개하는 속성 메서드는 'private' 접두어를 붙인다. 객체는 책임으로 이루어져있다. 우리는 어떤 객체에게 특정 행동을 기대하고, 객체를 만든다. 이때, 이 객체를 '1번객체'라고 하고, '2번..

Computer-이론/OOP

객체지향이 무엇일까? (2020.09.09)

목차 객체지향의 개념 객체지향 프로그래밍은 객체가 상호작용하는 방식으로 프로그램을 만드는 방법이다. 이런 객체지향 프로그래밍은 캡슐화, 다형성, 상속이라는 특성이 있다. 이 특성들을 가지고 있지 않으면 객체지향 언어라고 불릴 수 없을 만큼 중요한 특성이다. 내가 공부해온 책에서는, 또 하나의 특성, '합성'을 더해 객체지향을 말한다. 그런 객체지향의 특성을 나열해보자면 캡슐화 다형성 상속 합성 이 되겠다. 객체지향 프로그래밍을 하기 전에, 일단 객체가 무엇인지 알아야 객체지향적이 무엇인지 알고 프로그래밍을 할 수 있지 않겠는가? 먼저 객체가 무엇인지 알아보도록 하자 객체란? 일단 책에서 말하는 객체의 정의를 보고 알아가자. '객체는 우리가 인식하는 모든 대상, 물체 등 객관적으로 인식할 수 있는 대상이다..

Computer-이론/Data Structure

세그먼트 트리(2021.03.27)

목차 세그먼트 트리 어떤 수들의 집합이 있다. 그 집합은 원소가 마구마구 변할 수 있다고 한다. 이 때, 그 집합의 부분합을 아주 빠르게 구하기 위해서 만들어진 구조이다. 예를 들어서.. 1, 5, 6, 7, 4, 8, 2, 3 이렇게 수가 있다고 하자. 우리가 이 수들에서 특정 범위의 합을 구하려면 어떻게 해야할까? 역시 제일 간단한 방법은 다 더하는 것이다. 3~6번째 원소를 더하면. 6+7+4+8 = 25 이렇게 다 더하는 경우 시간복잡도는 O(N)으로 작은 범위 내에서 보면 나쁠 수 있다. 하지만, 이 합을 원하는 곳이 많아서 수천, 수만명이 요구를 한다면?? 또, 이 데이터에 접근 가능한 사람이 많아서 계속해서 값이 바뀐다면?? 참으로 난감할 것이다. 데이터는 바꿔줄 수 있지만. 합을 계속 해서..

Computer-이론/Data Structure

이중 우선순위 큐(2021.03.25)

목차 백준 7662번 이중 우선순위 큐. 우선순위는 큐에 들어가는 정수값 자체를 우선순위로 하는 이중 우선순위 큐이다. 최대힙과, 최소힙을 이용해서 구현을 해 보았다. 최대값을 제거할때는 최대힙에서 삭제연산을 하고, 삭제한 요소를 저장해둔다. 그리고 최소값을 제거할때 만약 제거하는 요소가 저장해둔 배열에 있다면, 한번더 삭제한다. void pop(heap *h, heap *h2, int num){ int temp; //최대값 삭제 if(num == 1){ temp = popM(h); for(int i = h->numsize-1; i > -1 ; i--){ if(temp == h->nums[i]){ temp = popM(h); h->nums[i] = h->nums[h->numsize--]; } } } //..

시유후
'분류 전체보기' 카테고리의 글 목록 (7 Page)