1. 객체지향


1-1. 객체지향이란?

기능이 아닌 객체가 중심이며 "누가 어떤 일을 할것인가?"가 핵심이다

필요한 데이터를 추상화 시켜 객체를 도출하고 그 객체간들의 역할을 정의해 나가는 것이다

 

1-2. 객체지향의 특징

추상화
abstraction
 객체들의 공통적인 특징(기능,속성)을 도출하는 것
클래스를 정의하는것
상속성
inheritance
 하나의 클래스가 가진 특징(함수,데이터)을 다른 클래스가 물려받는 것
- Overriding : 자식클래스가 부모클래스로부터 상속받은 메소드의 내용을 변경하는 것
다형성
polymorphism
 하나의 객체가 여러 가지 타입을 가질 수 있는 것
- Overloading : 한 클래스내에 동일한 이름의 생성자,메서드를 여러개 작성하는 것
(매개변수 타입,갯수,순서는 달라야함)
캡슐화
encapsulation
 객체가 독립적으로 역할을 할 수 있게 데이터와 기능을 하나로 묶어 관리하는 것
- 실제로 구현되는 부분을 외부에 드러나지 않도록 하여 정보를 보호할 수 있다
- 코드가 묶여있어 편리하다
동적바인딩
Dynamic Binding
⦁ 실행 이후에 값이 확정되는것
- 실행 시간에 실제로 사용된 객체의 클래스형에 의해 호출될 함수가 결정됩니다
- 함수가 가상 함수로 선언이 되면, 포인터 변수가 실제로 가리키는 객체에 따라 호출의 대상이 결정된다

 

1-3. 객체지향 장단점

장점  코드 재사용이 용이하다 : 이미 만들어진 클래스를 상속받거나, 객체를 재사용하거나, 부분 수정을 통해 사용 가능
⦁ 유지보수가 쉽다
⦁ 대형 프로젝트에 적합하다
단점   처리 속도가 상대적으로 느리다

 

 

 

2. JAVA


2-1. 인터페이스

객체의 사용방법을 정의한 기본 설계도

사용자가 프로그램을 이용하는 방법은 장치나 플랫폼이 달라지더라도 일정해야 한다 

 

2-2. 스프링(Spring)

Java에서 자주 쓰는 기능,기술을 모아둔 오픈소스 프레임워크

특징 1. IoC  (Inversion of Control, 제어 반전)
 IoC가 개발자의 코드를 호출하여 그 코드로 생명주기를 제어(관리)하는 것이다.
2. DI  (Dependency Injection, 의존성 주입)
 프로그래밍에서 구성요소 간의 의존 관계가 소스코드 내부가 아닌 외부의 설정파일을 통해 정의되는 방식이다.
 쉽게 말하자면 게임 캐릭터라는 하나의 객체가 존재하는데, 그 객체를 더 잘 이용하기 위해서 무기, 방패 등 아이템을 가져와 결합시키는 것이다. 이 객체는 무기와 방패를 뺐다 꼈다 자유자재로 할 수 있으며 아이템을 갈아끼우는데 어떤 상황에 구애받지도 않는다.
3. AOP  (Aspect Object Programming, 관점 지향 프로그래밍)
 로깅, 트랜잭션, 보안 등 여러 모듈에서 공통적으로 사용하는 기능을 분리하여 관리 할 수 있다.
 여러 객체에 공통으로 적용할 수 있는 기능을 구분함으로써 재사용성을 높여주는 프로그래밍 기법이다.
4. POJO  (Plain Old Java Object) 방식
 getter/setter를 가진 단순한 자바 오브젝트를 말한다.
장점 ⦁ 개발자의 수준과 실력에 상관없이 일정 수준의 품질을 기대할 수 있습니다.
⦁ 특정 환경이나 서버, 기술에 종속되지 않으며 유연한 애플리케이션을 개발
⦁ 애플리케이션에 공통적으로 나타나는 부가적인 기능들을 독립적으로 모듈화

 

2-3. 프레임워크(Framwork) / 라이브러리(Library)

  프레임워크 라이브러리
설명 클래스와 인터페이스의 집합
완성된 어플리케이션이 아닌 프로그래머가 완성시키는 작업을 해야함(필요한 코드를 짜 넣어야 함)
단순 활용가능한 도구들의 집합 (미리 만들어둔 반제품)
개발자가 만든 클래스에서 호출하여 사용
차이점 둘의 차이점은 바로 제어흐름이다
제어역전: 개발자가 제어하는것이 아닌 제어의 역전으로 스스로 흐름을 쥐고있다 직접제어: 개발자가 제어의 흐름을 쥐고있다

 

 

 

3. JSP (Java Server Pages)


3-1. JSP란?

HTML코드에 JAVA코드를 넣어 동적 웹페이지를 생성하는 도구

 

3-2. MVC 패턴(Model, View, Controller)

애플리케이션을 3가지 역할로 구분한 소프트웨어 디자인 패턴중 하나다

서로 분리되어 역할을 나눴기에 유지보수와 확장성이 좋고 유연성 증가, 중복코딩을 해결했다

Model 애플리케이션의 정보, 데이터
View 사용자 인터페이스 요소
Controller 데이터와 사용자 인터페이스 요소를 연결하는 다리 역할

 

3-3 GET / POST

HTTP 프로토콜을 이용해서 서버에 무언가를 전달할떄 사용하는 방식이다

GET 데이터를 서버에서 가져와 조회할 떄 사용하는 방식
전송속도 우수, 파라미터가 URL에 노출되지 않음
데이터를 가져오는것 : SELECT 기능
POST 데이터를 서버로 보내 추가, 수정하기 위해 사용하는 방식
id, password같은 중요한 정보를 전송할 떄 사용
데이터를 수행하는것 : INSERT, UPDATE, DELETE 기능
차이점 전송방식의 차이

 

 

 

4. ORACLE


4-1. 트랜잭션 명령어

COMMIT 변경된 내용을 영구 저장
ROLLBACK 변경되기 이전 상태로 되돌리기

4-2. 그룹 함수

SUM 그룹의 누적 합계 도출
AVG 그룹의 평균 도출
COUNT 그룹의 총 갯수 도출
MAX / MIN 그룹의 최댓값 / 최솟값 도출

4-3. 무결성 제약조건

DB의 정확성, 일관성을 보장하기 위해 저장, 삭제, 수정등을 제약하는 조건

PRIMARY KEY
(PK)
NOT NULL NULL값 안됨
UNIQUE 중복된 값 안됨
FOREIGN KEY 참조되는 테이블의 값이 존재하면 허용함
CHECK 저장 가능한 데이터 값의 범위나 조건을 지정하며 설정한 값만을 허용함


4-4. RDB (Relational Data Base) 관계형 데이터 베이스

키와 값들의 간단한 관계를 테이블화 시킨것

테이블이 다른 테이블들과 관계를 맺고 모여있는 집합체 

이러한 관계를 나타내기 위해 외래 키(foreign key)를 사용

 

4-5. ERD

테이블간의 관계를 설명해주는 다이어그램

프로젝트에서 사용되는 DB의 구조를 한눈에 파악할 수 있다

 

 

 

5. 기타


5-1. null과 undefined 차이

null 변수를 선언하고 빈값을 할당함
undefined  변수를 선언하고 값을 할당하지 않음

 

5-2. 백엔드 / 프론트엔드

백엔드(Back-End) 백엔드는 웹 애플리케이션의 사용자가 보지 못하는 영역인 서버나 데이터베이스를 관리하는 기술입니다.
Node.js, Java
프론트엔드(Front-End) 사용자가 볼 수 있는 화면, 인터페이스를 의미합니다.
HTML, CSS, JavaScript