전체 글 188

[JAVA] 객체 지향 프로그래밍(OOP)의 특징

객체 지향 프로그래밍은 프로그래밍에서 필요한 데이터를 추상화시켜서 상태, 행위를 가진 객체를 만들어 서로 연관관계를 맺어 로직을 구성한다. 추상화, 캡슐화, 상속, 다형성의 특징을 갖는다. 추상화 공통적인 상태나 행위를 하나로 묶는 것. 체적인 것을 상세히 하지 않고, 필요성에 의한 특성만 구성하는 것. 예를 들어, K3, 아반떼, 그랜져 등을 자동차라는 추상적인 객체로 정의하는 것. 캡슐화 데이터 구조와 데이터를 다루는 방법을 결합시켜서 묶는 것. 중요한 데이터를 보존, 보호하는 것이다. (은닉성 보장) 외부에서 접근하지 못하도록 한다. 상속 자식은 부모의 것을 물려받는다. 중복 코드를 줄이고, 객체의 다형성을 구현할 수 있다. 다형성 하나의 변수명, 함수명 등이 상황에 따라 다른 의미로 해석될 수 있..

Java 2021.04.06

[JAVA] DB와 관련된 (순수 JDBC, JDBC 템플릿, JPA)

JAVA를 통해 앱 개발을 하면 DB를 참조해야 하는 상황이 있다. 이때, Plain JDBC부터 스프링 JPA까지 다양한 방법이 있다. Plain JDBC JAVA 기반 앱에서 JDBC API, JDBC Driver를 통해 DB에 접근한다. 1) JDBC Driver를 로드하고 DriverManager를 통해 JDBC Driver 호출, DB와 통신을 담당하는 클래스 2) DB에 연결하고 SQL문으로 DB를 사용 Statement (SQL문 전달 역할), ResultSet (쿼리문 실행 결과 저장, 한 행씩 호출 가능), PreparedStatement(Statement 객체 기능 향상, 코드 안전성, 가독성 높임, 매개변수 전달에 용이함.) 3) DB 연결 종료 close()를 통해, 연결, 연결상태..

Java 2021.04.06

[Python] 정렬

정렬은 특정한 기준으로 나열한다. 선택정렬, 삽입정렬, 퀵정렬, 계수정렬 등 많은 정렬 방식이 있다. 선택정렬 주어진 리스트에서 가장 작은 데이터를 선택해 맨 앞 데이터와 교체, 그 다음 작은 데이터를 찾아 두번째 데이터와 교체하면서 정렬한다. for i in range(len(array)): min_idx = i#최소값 인덱스 for j in range(i+1, len(array)): if array[min_idx] > array[j]: # 최소값보다 작은 값을 찾음 min_idx = j array[i], array[min_idx] = array[min_idx], array[i] # swap 삽입정렬 데이터를 하나씩 확인하면서 각 데이터를 적절한 위치에 삽입한다. 구현할 때, 리스트를 읽으면서 왼쪽 데..

Algorithm 2021.04.04

[Python] DFS, BFS

DFS (깊이 우선 탐색)은 연결된 끝 노드까지 찾아가면서 탐색한다. 스택구조로 구현한다. (선입후출) def dfs(graph, v, visited): visitied[v] = True for i in graph[v]: if not visited[i]: dfs(graph, i, visited) 인자는 그래프, 현재 위치, 방문기록 리스트를 전달한다. 현재 위치를 방문처리하고, 그래프 (인접리스트)에서 방문하지 않은 곳이 있다면 그 노드에 대해서 DFS를 재귀함수 형식으로 불러온다. DFS는 덩어리 나누기, 지역 나누기와 같은 문제에 좋다. BFS (너비 우선 탐색)은 인접한 노드부터 탐색한다. 큐 구조로 구현한다. (선입선출) from collections import deque def bfs(grap..

Algorithm 2021.04.04

[JAVA] 접근 제어자

JAVA 접근 제어자 변수, 메서드, 클래스에 대한 접근을 제어한다. public > default > protected > private 순으로 접근 범위가 크다. (더 자유롭게 접근한다.) 왜 사용하는가? 객체 지향 프로그래밍 (OOP) 특징 중 정보은닉이란 사용자가 굳이 알 필요 없는 정보는 사용자로부터 숨겨야 한다는 개념이다. 이를 통해 최소한의 정보로 손쉽게 프로그램을 사용할 수 있도록 한다. JAVA에서는 정보은닉을 위해 접근 제어자를 사용한다. JAVA에서 접근 제어자 public : 접근 제한이 없음. protected : 동일한 패키지 내에 존재하거나 파생 클래스(상속받은 자식 클래스)에서만 접근 가능함. default : 접근 제어자를 명시하지 않으면 default, 동일한 패키지 내에..

Java 2021.04.01

Lambda

Lambda 함수? 프로그래밍에서 익명 함수를 나타낸다. 함수를 더 단순하게 표현한다. 병렬처리와 이벤트 지향 프로그래밍에 적합하다. 표현식 // 방법 1. (매개변수) -> {함수} // 방법 2. 매개변수가 하나일 경우 생략 가능 () -> {함수} // 방법3. 함수가 단일 실행문이면 {} 생략 (매개변수) -> 함수 // 방법4. 함수가 return문으로만 구성된 경우 {} 생략 불가 (매개변수) -> {return ;} 사용 예제 public interface PlusOne { int one(int num); } // ... PlusOne plusOne = new PlusOne() { @Override public int one(int num) { return num + 1; } } // .....

Java 2021.03.30

Maven, Gradle

Maven과 Gradle은 빌드 툴이다. 빌드*? 우리가 작성한 소스코드, 프로젝트에 사용되는 자원 등을 JVM이나 WAS**(ex, tomcat)가 인식할 수 있는 구조로 패키징 하는 과정 혹은 그 결과물. * 빌드는 소스 코드 컴파일, 테스트 코드에 대한 컴파일 후 실행, 테스트에 대한 리포트, 추가 설정 작업 진행 후 패키징을 수행, 결과물을 만들어낸다. ** WAS? Web Application Server, 웹에서 동적 컨텐츠를 제공하기 위해 사용되는 서버 빌드 툴? 소스코드 빌드 과정을 자동으로 처리해주는 프로그램, 외부 소스 코드를 자동으로 추가 및 관리. 크지 않은 프로젝트의 경우 라이브러리를 관리하는데 어려움이 없지만, 스프링 프레임워크를 사용해 웹 개발을 할 때만 해도 많은 라이브러리,..

Java 2021.03.30

DAO, DTO

JSP, Servlet에서 DB를 참조할 때 사용하는 객체. DAO: Data Access Object DAO는 DB에 접근할 때 사용하는 객체. DB를 사용해 데이터를 조회하거나 생성 수정 삭제하는 기능을 전담한 객체. DTO: Data Transfer Object VO (Value Object)라고도 한다. DTO는 DB의 데이터 형태 (NUMBER, VARCHAR2 등)을 자바 코드에서 사용하는 데이터 형태(int, String 등)로 변환해주는 객체이다. 보통 getter, setter 메서드를 가진 클래스로 데이터를 사용하기 위해 선언하는 객체다. 커넥션 풀 (Connection Pool) 웹서버가 계속해서 DB를 연결, 연결해제를 반복하면 DB에 과부하가 될 경우가 있어 중간에 커넥션 풀을 통..

Java 2021.03.29

SQL 기초 (Oracle DB)

테이블 생성 및 삭제 테이블 생성 CREATE TABLE {table_name} ( col_name1 NUMBER(4), col_name2 VARCHAR2(20), col_name3 VARCHAR2(10), ); 테이블을 생성할 때, CREATE TABLE로 테이블 이름을 선언하고, 내부에 컬럼명, 타입, 사이즈를 선언한다. 테이블 검색 SELECT * FROM tab; 테이블 목록 전체를 출력한다. * 에 테이블 명으로 검색할 수 있다. 테이블 삭제 DROP TABLE {tab_name}; 테이블 생성 제약 조건 테이블 생성할 때, CONSTRAINT를 통해 제약 조건을 걸 수 있다. 가장 기본적으로 앞에서의 테이블에서 ... col_name1 NUMBER(4) CONSTRAINT col_name1_p..

Anything 2021.03.29
반응형