자바
자바
1. OOP란?
- Object-oriented Programing
- 객체지향 프로그래밍
- 컴퓨터 프로그램을 명령어의 목록으로 보는 시각에서 벗어나 여러개의 독립된 객체로 파악하는 것
- 해당 객체로부터 개발하고자 하는 특징과 기능을 뽑아와 프로그래밍 하는 것
장점
- 코드에 대한 재사용이 용이하다
- 유지보수가 용이하다
- 객체단위로 코드가 나뉘어져 있어 디버깅이 유리하다
- 클래스 단위로 모듈화가 가능하여 업무 분담이 유리하다
단점
- 처리속도가 상대적으로 느리다
- 객체가 많을수록 용량이 커질 수 있다
- 설계 시 많은 시간과 노력이 필요하다
- 객체가 상태를 갖기 때문에 변수가 존재하고, 변수를 통해 객체가 예측할 수 없는 상태가 되면 어플리케이션 내부에서 버그를 발생시킨다
특징
추상화
- 공통의 속성이나 기능을 묶어 이름을 붙이는 것, 객체 지향적 관점에서 클래스를 정의하는 것
- 필요한 정보만을 중심으로 간소화하는 것
- 아우디, 벤츠라는 속성에서 자동차라는 공통된 속성을 추출, 간소화하여 하나의 집합으로 다루는 것
캡슐화
- 정보 은닉 - 필요가 없는 정보는 외부에서 접근하지 못하도록 제한하는 것
- 필요한 정보와 행동을 묶음과 동시에 보여줘야 할 것과 숨겨야 할 것으로 구분지음.
- 데이터나 기능을 책임이 있는 객체에 그룹화 하는 것
상속성
- 상위 개념의 특징을 하위 개념이 물려 받음.
- 여러 객체에서 사용되는 기능을 하나의 클래스로 분리하여 사용, 코드의 재사용
다형성
- 하나의 객체가 여러 형태를 띈다라는 의미. 상속받은 자식클래스들이 기능이 각기 다르다.
- 객체간 관계를 디자인
- 여러개의 자식클래스를 하나의 부모클래스로 통합 관리가 가능
- 서로 같은 메세지를 받았을 때 각자의 방식으로 동작
2. 오버라이딩, 오버로딩이란
- 오버라이딩
- 런타임 타입 다형성
- 상속받은 부모클래스의 메서드를 자식클래스에서 재정의해 사용하는 것
- 상황에 맞게 메서드를 변경해 사용
- 오버로딩
- 컴파일 타입 다형성
- 메서드의 이름은 동일하지만 매개변수의 개수나 자료형이 다를 경우 별개의 메서드로 인정하는 것
3. 자바의 특징
- 운영체제에 독립적
- JVM (자바가상머신 - 시스템 메모리를 관리하면서 자바 기반 애플리케이션을 위해 이식 가능한 실행 환경 제공)에 동작하기 때문에, 특정 운영체제에 종속 되지 않음
- 객체 지향 언어
- 클래스와 객체를 사용하여 프로그램을 간결하게 구현 가능
- 프로그래밍 하기 위해 여러 언어적 지원을 하고 있음
- 캡슐화, 상속, 추상화, 다형성이 특징
- 자동 메모리 관리 (Garbage Collection)
- 네트워크와 분산환경 지원
- 멀티쓰래드(동시사용가능) 지원
- 동적 로딩(그때 그때 사용 가능) 지원
- 오픈소스임
4. 클래스 VS 객체 VS 인스턴스
- Class [클래스] - 객체를 정의해 놓은 것, 객체를 생성하기 위해 사용됨
- Object [객체] - 실제로 존재하는 것, 사물 또는 개념
- Instance [인스턴스] - 객체랑 비슷, 객체는 인스턴스를 포함하고 있음
- 인스턴스화 - 클래스로부터 객체를 만드는 과정을 클래스의 인스턴스화 라고 함 ex) Car a = new Car();
- 클래스로부터 만들어진 객체를 그 클래스의 인스턴스(객체) 라고 함
5. JDBC란?
- Java Data Base Connection의 약자
- JAVA언어를 통해 데이터 베이스에 접근 할 수 있는 프로그래밍을 의미
6. ARRAY VS LIST
- Array
- 선언시 배열 크기 지정이 필요하다. 예) String list = new String[7]
- 객체를 넣을 때 인덱스 번호를 정의해야 한다. 예) list.add(‘book’)
- 다차원 저장이 가능하다 (Multidimensional).
- 선언시 메모리가 할당된다
- 기본 데이터 타입(Primitive Type), 오브젝트 할당 가능하다
- 접근이 빠르다 (인덱스 번호를 이용해 Random access를 하기 때문)
- List
- 사이즈 지정을 하지 않아도 동적으로 변화한다.
- 그냥 넣어도 된다.
- 다차원 저장이 불가능하다.
- 오브젝트만 할당 가능하다
- (* 기본 데이터 타입도 할당 가능한 것처럼 보이지만 실제로는 JVM에 의해 오브젝트와 되어 할당되는 것이다. 따라서 기본 데이터 타입만 들어가는 자료구조가 요구될 때에는 Array가 Arraylist보다 더 효율적이다.) 추가, 삭제가 빠르다 (포인터로 Sequential access를 하기 때문)
7. MAP VS Set VS LIST
- List는 순서가 있는 데이터의 집합으로, 중복을 허용한다.
- Set은 순서가 없는 데이터의 집합으로, 중복을 허용하지 않는다.
Map은 key와 value한 쌍으로 이루어지는 데이터의 집합으로 순서가 없다. 이 때 키는 중복을 허용하지 않는다.
- List와 Set은 Collection 인터페이스를 상속받고 Map은 구조상의 차이로 인해 별도로 정의한다.
8. Queue와 Stack의 차이는?
- Queue는 선형자료구조의 일종으로 FIFO(First In, First Out)구조를 가지고 있고, Stack은 LIFO(Last In, First Out)구조를 가지고 있다.