5줄 요약

  • 캡슐화(Encapsulation)는 객체지향 프로그래밍에서 객체의 상태와 행위를 하나로 묶고, 외부에서 직접 접근하지 못하도록 차단하는 것을 말합니다.
  • 이를 통해 객체의 상태를 숨기고 보호함으로써, 외부에서 객체의 상태를 무분별하게 변경하는 것을 방지하고, 객체의 일관성을 유지할 수 있습니다.
  • 캡슐화를 구현하는 가장 대표적인 방법은 정보 은닉(Information Hiding)입니다.
  • 정보 은닉은 객체의 내부 상태를 외부에서 접근할 수 없도록 private 등의 접근 제한자를 이용하여 제한하고, 외부에서는 제공되는 public 인터페이스를 통해 객체의 상태를 조작하도록 합니다.
  • 캡슐화는 소프트웨어 개발에서 유지보수성과 재사용성을 높이고, 객체 간의 결합도를 낮추는 데 중요한 개념 중 하나입니다.

추가 내용

경험

블로그 이미지

RIsN

,

5줄 요약

  • 객체지향 프로그래밍(Object-Oriented Programming, OOP)은 소프트웨어 개발 패러다임 중 하나로, 현실 세계의 객체를 소프트웨어 객체로 모델링하여 소프트웨어를 개발하는 방법입니다.
  • 객체는 데이터와 그 데이터를 조작하는 메서드로 이루어져 있으며, 소프트웨어 개발에서는 이러한 객체를 생성하여 조합하여 프로그램을 만듭니다.
  • 객체지향 프로그래밍에서는 상속, 다형성, 캡슐화와 같은 개념을 사용하여 코드의 재사용성과 유지보수성을 높이고, 복잡한 문제를 해결하는 데 유용합니다.
  • 또한, 객체의 상태 변경과 관련된 동작들은 객체 내부에 캡슐화되어 있으므로, 프로그램의 안정성과 보안성도 높일 수 있습니다.
  • 자바(Java), C++, 파이썬(Python)과 같은 프로그래밍 언어는 객체지향 프로그래밍을 지원하는 언어입니다.

추가 내용

경험

  • 면접에서 물어봤는데 제대로 대답 못했습니다.

블로그 이미지

RIsN

,

사용 이유

  • JavaScript는 숫자 배열을 정렬(Sort)할 때 문자로 취급하므로, 제대로 순서가 잡히지 않는 현상이 일어날 수 있습니다.
    • 예) [3, 1, 2, 100, 4, 200].Sort()가 1, 100, 2, 200, 3, 4로 나올 수 있습니다.
  • 위와 같은 상황을 방지하기 위해서 배열.Sort() 내부에 커스텀 함수를 주어 순서를 정리하도록 합니다.

사용 예

예) 출처 : Data Structures & Algorithms with JavaScript

function compare(num1, num2) {
	return num1 - num2;
}
var nums = [3, 1, 2, 100, 4, 200];
nums.sort(compare);
print(nums); // 1, 2, 3, 4, 100, 200
  • return 값이 음수(-)일 때
    • 왼쪽 값을 좌측 순서로
    • 예) 왼쪽 숫자가 오른쪽 숫자보다 작다는 것
  • return 값이 동일할 때
    • 동일 순서
  • return 값이 양수(+)일 때
    • 오른쪽 값을 좌측 순서로
    • 예) 왼쪽 숫자가 오른쪽 숫자보다 크다는 것
블로그 이미지

RIsN

,

얕은 복사

  • 참조하는 복사
  • 원본이 바뀌면 복사된 것도 같이 바뀜
let a = [1, 2, 3, 4, 5];
let b = a;
a[0] = 400;
console.log(b[0]) // :: 400이 나옴

>> 예제는 자바스크립트

깊은 복사

  • 값을 복사
  • 원본이 바뀌어도 복사된 것도 같이 바뀌지 않음
let a = [1, 2, 3, 4, 5];
let b = [...a];
a[0] = 400;
console.log(b[0]) // :: 1이 나옴

>> 예제는 자바스크립트

블로그 이미지

RIsN

,
블로그 이미지

RIsN

,

링크드 리스트(Linked List)

  • 리스트(List)
  • 값(Value)과 '다음 노드를 가리키는 참조(Next)'를 가지고 있는 노드(Node)를 사용한 연결 리스트
  • 시간 복잡도
    • 삽입, 삭제(위치를 알 경우) : O(1)
    • 탐색 : O(n)

'Programming > Data Structure' 카테고리의 다른 글

완전 이진 트리(Complete Binary Tree)  (0) 2021.04.22
리스트(List)  (0) 2021.04.21
이진 트리(Binary Tree)  (0) 2021.04.20
트리(Tree)  (0) 2021.04.20
해쉬 테이블(Hash Table)  (0) 2021.04.20
블로그 이미지

RIsN

,

완전 이진 트리(Complete Binary Tree)

  • 이진 트리(Binary Tree)
  • 마지막 계층을 제외한 모든 계층이 전부 채워져 있을 것
  • 마지막 계층은 왼쪽부터 채워져 있을 것

'Programming > Data Structure' 카테고리의 다른 글

링크드 리스트(Linked List)  (0) 2021.04.23
리스트(List)  (0) 2021.04.21
이진 트리(Binary Tree)  (0) 2021.04.20
트리(Tree)  (0) 2021.04.20
해쉬 테이블(Hash Table)  (0) 2021.04.20
블로그 이미지

RIsN

,

리스트(List)

'Programming > Data Structure' 카테고리의 다른 글

링크드 리스트(Linked List)  (0) 2021.04.23
완전 이진 트리(Complete Binary Tree)  (0) 2021.04.22
이진 트리(Binary Tree)  (0) 2021.04.20
트리(Tree)  (0) 2021.04.20
해쉬 테이블(Hash Table)  (0) 2021.04.20
블로그 이미지

RIsN

,

이진 트리(Binary Tree)

'Programming > Data Structure' 카테고리의 다른 글

완전 이진 트리(Complete Binary Tree)  (0) 2021.04.22
리스트(List)  (0) 2021.04.21
트리(Tree)  (0) 2021.04.20
해쉬 테이블(Hash Table)  (0) 2021.04.20
큐(Queue)  (0) 2021.04.19
블로그 이미지

RIsN

,

트리(Tree)

  • 트리 구조, 가지 치기 형식
  • 시간복잡도 : ?
  • 용어
    • 최상위 노드(Root Node)
    • 계층(Level)
    • 부모 노드(Parent Node)
    • 자식 노드(Child Node)
    • 잎새 노드(Leaf Node) : 자식 노드(Child Node)가 하나도 없는 노드
  • 최상위 노드(Root Node)를 시작으로,
    모든 노드(Node)들은 부모 노드(Parent Node)로써 자식 노드(Child Node)를 가진다.
  • 자식 노드의 개수를 2개로 제한하는 경우 이진 트리(Binary Tree)라고 한다.
  • 예 : 군대 계급제도

'Programming > Data Structure' 카테고리의 다른 글

완전 이진 트리(Complete Binary Tree)  (0) 2021.04.22
리스트(List)  (0) 2021.04.21
이진 트리(Binary Tree)  (0) 2021.04.20
해쉬 테이블(Hash Table)  (0) 2021.04.20
큐(Queue)  (0) 2021.04.19
블로그 이미지

RIsN

,