![](http://i1.daumcdn.net/thumb/C148x148/?fname=https://blog.kakaocdn.net/dn/uNjjC/btrwtZPTDQs/uoSo0lhhcw1MpjbHkShnJ0/img.png)
객체지향 객체들이 메세지를 주고받는 협력 과정을 통해 소프트웨어를 완성시키는 과정을 객체지향이라고 한다. 객체에게 적절한 책임을 할당해야한다. 객체지향의 특징 여러 객체가 동일한 역할을 수행할 수 있다 역할은 대체 가능성을 의미한다 객체는 책임을 수행하는 방법을 자유롭게 선택할 수 있다 하나의 객체가 여러 역할을 수행할 수 있다 좋은 객체가 되는 조건 객체는 협력적이어야 한다. 객체는 다른 객체의 요청에 충실히 귀를 기울이고 적극적으로 도움을 요청할 수 있어야 한다. 모든걸 처리하려고 하는 객체는 성능이 좋지 못하다. 객체는 자율적이어야 한다. 객체는 자신의 원칙에 따라 업무를 수행하거나 통제해야 한다. 객체의 구성요소 객체는 구체적인 사물일 수도 있고 추상적인 개념일 수 있다. 상태 : 객체의 상태를 ..
![](http://i1.daumcdn.net/thumb/C148x148/?fname=https://blog.kakaocdn.net/dn/N1OAL/btrvQhYkO4P/lUCY7mOAu2u3k9oHAXboe0/img.png)
컬렉션 배열은 고정크기이고 효율적으로 삽입/삭제를 할 수 없다는 단점이 있어 컬렉션 프레임워크가 등장했다. 컬렉션은 객체를 저장하는 역할을 하고 객체의 효율적인 삽입/삭제/검색을 가능하게 한다. 컬렉션의 인터페이스와 구현체 인터페이스 분류 특징 구현클래스 Collection List - 순서 유지 - 중복 저장 - ArrayList, Vector - LinkedList Set - 순서 유지 X - 중복 저장 X - HashSet, TreeSet Map - 키와 값으로 저장 - 키는 중복 X - HashMap, Hashtable - TreeMap, Properties List 객체를 일렬로 늘어놓은 형태. 객체를 인덱스로 관리하여 자동으로 인덱스를 부여한다. ArrayList : 배열을 생성할 때에는 크기..
![](http://i1.daumcdn.net/thumb/C148x148/?fname=https://blog.kakaocdn.net/dn/IBRXL/btrvQgYKmSK/onbIprQk53iMsu3UoTSoh1/img.png)
함수적 인터페이스 : @FunctionalInterface 모든 인터페이스를 람다식으로 사용할 수 없다. 람다식은 하나의 메서드를 정의하기 때문에 인터페이스에 하나의 함수만 선언되어 있어야한다. 두개 이상의 추상 메서드가 선언된 경우 해당 인터페이스는 람다식을 이용하여 구현 객체를 생성할 수 없다. 하나의 추상메서드가 있는 인터페이스 형태를 함수적 인터페이스라고 한다. 그리고 @FunctionalInterface 애노테이션을 선언해주면 해당 인터페이스는 함수적 인터페이스라는 의미다. 함수적 인터페이스 : Consumer 리턴 값이 없는 accept() 를 가지고 있고 매개 값을 소비하기 위한 용도이다. Consumer consumer = t => System.out.println("T의 결과 : " + ..
![](http://i1.daumcdn.net/thumb/C148x148/?fname=https://blog.kakaocdn.net/dn/syx3q/btrvE45KOwt/H8B06029ao2MdmrQJNkg9K/img.png)
람다식 메서드를 하나의 식으로 표현한 것. 메서드의 이름과 리턴 값이 없어지므로 익명 함수라고 한다. 만약 메서드를 사용한다면 클래스를 생성하고 객체를 생성해야 함수를 호출할 수 있다. 그러나 람다식을 사용하면 람다식 자체가 함수가 되기 때문에 편리하다. int[] arr = new int[5]; Arrays.setAll(arr, (i) -> (int)(Math.random()*5) + 1); int method() { return (int)(Math.random()*5) + 1; } 람다식 사용법 int max(int a, int b) { return a>b ? a : b; } (int a, int b) -> { return a>b ? a : b; } (int a, int b) -> a>b ? a : ..
![](http://i1.daumcdn.net/thumb/C148x148/?fname=https://blog.kakaocdn.net/dn/bEzCzs/btrvFAQTpL2/P4n7171Q7YM9NZuhq0DHRK/img.png)
Iterator와 ListIterator Iterator : Collections에 저장된 요소를 접근하는데 사용하는 인터페이스 ListIterator : Iterator에 양방향 조회기능을 추가한 인터페이스 Iterator 사용 예시 List list = new ArrayList(); list.add("1"); list.add("2"); Iterator iter = list.iterator(); while(iter.hasNext()) { System.out.println(iter.next()); } Collection 인터페이스에는 Iterator형 객체를 리턴하는 iterator 함수가 존재한다. List나 Set인터페이스의 구현체는 각 특성에 맞게 iterator 함수를 구현하였다. Iterator..
![](http://i1.daumcdn.net/thumb/C148x148/?fname=https://blog.kakaocdn.net/dn/dKGegO/btrsxIq351I/3GLV7yqtVqtzk262ug7kR1/img.jpg)
Collection 배열을 이용하게 되면 고정크기이기 때문에 비효율적으로 사용할 수 밖에 없었다. 유동 크기의 데이터를 효율적으 로 관리하기 위해 Collection 프레임워크를 사용할 수 있다. List 중복을 허용하고 저장 순서가 유지되는 인터페이스다. ArrayList List 인터페이스를 구현하기 때문에 중복을 허용하고 저장 순서가 유지되는 자료구조이다. 배열이 동적으로 늘어 나는 것이 아니고 배열이 꽉 차게 되면 더 큰 새로운 배열을 생성해서 기존의 배열에 저장된 내용을 새로운 배열 로 복사한다. LinkedList LinkedList역시 List 인터페이스를 구현하기 때문에 중복을 허용하고 저장 순서가 유지되는 자료구조이다. 하나의 노드는 다음 노드의 주소를 가지고 있어서 요소들이 연속적으로 ..
- Total
- Today
- Yesterday
- AWS
- 기술면접
- ddl-auto
- 파일업로드설정
- N+1
- db
- ORA-27125
- 트랜잭션격리성
- 인덱스
- nginx
- graphql
- 트랜잭션
- Java
- OS
- Oracle
- TCP
- CodeDeploy
- spring
- 운영체제
- ci/cd
- 프로그래머스
- Til
- Travis CI
- SpringGraphQL
- JPA
- SpringSecurity
- EC2
- 람다식
- 네이버클라우드
- level0
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | |
7 | 8 | 9 | 10 | 11 | 12 | 13 |
14 | 15 | 16 | 17 | 18 | 19 | 20 |
21 | 22 | 23 | 24 | 25 | 26 | 27 |
28 | 29 | 30 | 31 |