1. Stack과 Heap의 차이Stack과 Heap의 차이를 설명하세요.
- 둘 다 메모리이다.
- Stack은 변수와 관련이 깊다. 소멸시점이 Heap과 다르다.
- Stack : Integer 타입 변수 b가 스코프를 빠져나가는 순간 소멸,
- Heap : 가리키는 메모리가 없을 때 garbage collector가 소멸시킨다.
대부분은 클래스와 관련된 문제가 나올 것이다.
2. 캡슐화에 대해서 설명하세요.
- 정보의 은닉(public private)
- public, private
- 내가 다른 사람이 사용해야 될 어떤 모듈(클래스)를 만드는데,
호출하는 모듈에게 풀어줘야 할 것은 풀어주고 닫아야 할 것은 닫는다. (내부에서만 쓰이게)
TTT 클래스의 public void test1 과 priavte void test2
클래스 t 를 선언해 test1, test2 호출해보지만
test2는 작동하지 않는다.
하지만 TTT 클래스 내부에서는 test2가 호출이 가능하다.
test2라는 기능은 다른 사람이 호출해야할 필요가 없다.
API로서의 기능이 전혀 없는 내부에서만 호출되어야 한다.
내부에서만 호출, 외부에서 쓰지 못하게 막아야 한다.
= 정보의 은닉
3. 응집도에 관해서 기술해라.
- 특정 모듈 (클래스)가 존재할 때, 기능(멤버변수, 속성)이 적절한 위치에 있어야 한다.
- 높을 수록 좋다. (반대로 결합도는 낮게)
자동차의 바퀴를 굴린다는 상황일 때
바퀴는 자동차가 굴리는 것이고,
사람은 차를 탄다와 같은 속성을 가지고 있어야 한다는 것
있어야 할 곳에 있는 것이다.
class Person {
public void ridingACar(){
System.out.println("차를 탄다!!!");
}
}
class Car{
private int fuel = 100;
public void rolling() {
System.out.println("자동차의 바퀴를 굴립니다");
}
}
응집도를 먼저 올리고, 결합도를 그 다음에 올려야 한다.
4. 결합도에 대해서 기술해라.
- 모듈과 모듈 소스코드 상으로 얼마나 결합되어 있는가, 많이 결합되어 있을 수록 수정이 발생되었을 때,
양쪽 다 수정해야 될 가능성이 높아진다.
- 상속, 다형성, 오버라이딩 (문법)을 이용해서 해결해야 한다. == > interface
- 결합도는 낮을 수록 좋다!! (필수)
사람 안에 자동차가 들어있는 것이 말이 안됀다.
결합도가 너무 높은 상황
Person안에 속성으로 자동차가 들어있는 것이 문제이다.
이제 Person이 소멸되도 Car가 소멸되지는 않는다.
Dependency Injection (Autowired) : Setter 주입을 말한다.
동작은 같지만, 결합도는 낮아졌다.
여전히 private Car car; 가 걸린다.
상속 다형성 오버라이딩의 끝은 인터페이스
5. OOP(Object Oriented Programming) 객체지향 프로그래밍
- 캡슐화, 응집도, 결합도를 활용한 프로그래밍이다.
- 코드를 작성할 때, 묶을 건 묶고, 구분할 것은 구분해서 프로그래밍을 하는 기법
총체적인 질문이다.
6. 자료구조에 대해서 설명하세요
- 효율적인 접근 및 수정을 가능케 하는 자료의 조직, 관리, 저장
- List, Map
프로그램에서 배열을 쓸 일은 흔치 않다.
'Java > 자바기본개념' 카테고리의 다른 글
[자바] ^ 연산자를 이용한 간단한 암호화 (0) | 2022.12.31 |
---|---|
List와 Map의 차이 (0) | 2021.06.27 |
[JAVA] nextLine()이 안 될 때 (0) | 2021.05.26 |
다형성이란? (0) | 2020.12.15 |
추상클래스, 추상메소드 (0) | 2020.12.12 |