객체지향 = Object를 가지고 프로그래밍을 하는 것(모든 것을 객체로 만들어서 이에 대한 상호작용을 나타내는 것)
프로그래밍을 해서 가장 효율적인 방법을 찾아내는 것이 중요!! ( → 현재는 연산을 가장 작게 하는 것이 효율적이라고 보는 중 )
Java Collections Framework
→ 철저히 테스트된 다양한 인터페이스와 클래스로 구성
→ 클래스는 널리 사용되는 데이터 구조 및 알고리즘을 나타냄
→ Collection이 필요한 대부분의 응용 프로그램에 대해 프레임워크는 적절한 클래스를 제공
추상 클래스
→ AbstractCollection, AbstractList, AbstractSet등의 추상 클래스 제공
→ 정의가 하위 클래스의 필드에 의존하는 모든 메소드를 추상으로 제공하고 해당 필드에 의지하지 않는 메소드를 정의
타입 파라미터 → 타입 파라미터를 사용하는 지네릭스 타입으로 선언됨
스택의 문제점? → 10개를 이상을 넘어가면 코드가 복잡해진다! ( = 대신 list를 사용한다 )
List
장 : 읽는 속도 빠름
단 : 정확한 위치 X(엉뚱한 데이터 가져옴)
수정 / 삭제할 때의 효율성 떨어짐
배열은 처음 생성할 때 사이즈를 정하면, 나중에 사이즈를 변경할 수 없다!
iterable 을 붙이는 위치 = 모든 List가 iterable 인 것이 편하다. (즉, iterable은 List에 붙이자!)
**인터페이스 / 이터러블 차이점**
인터페이스 ( = interface )
: 다른 클래스를 작성할 경우 기본이되는 틀을 제공
: 다른 클래스 사이의 중간매개 역할까지 담당하는 추상클래스
이터러블 ( = iterable )
: 이터레이터를 리턴하는 [Symbol.iterator]() 메서드를 가진 객체
: Array.prototype 의 Symbol.iterator 를 상속받기 때문에 배열, 문자열은 이터러블
이터레이터 ( = iterator )
: {value : 값 , done : true/false} 형태의 이터레이터 객체를 리턴하는 next() 메서드를 가진 객체
: next 메서드로 순환 할 수 있는 객체로, [Symbol.iterator]() 안에 정의
배열을 이터러블로 만드는 가장 쉬운 방법!!
public java.util.Iterator<E> iterator() {
return Arrays.stream(this.elements).iterator();
}
JAVA에서 Type이 될 수 있는 것들 1. 클래스 2. 추상클래스 3. 인터페이스 4. enum
ADT = 클래스의 타입 EX> Type t = new Instance();
ADT(Interface) class
애자일 방법 : 개발 주기를 빠르게 돌리자!
알고리즘 : 어떠한 동작이 가장 효율적으로 동작한다고 가정하는 것
JAVA 자체에 존재하는 리스트 : add(), isEmpty(), get(), indexof(), remove(), set(), replaceAll()
↑ import java.util.List;
ArrayList를 만들 때, 50개를 만들고 난 뒤에 다른 메모리를 할당 받는다.
장 : 한 번 메모리를 할당받으면, 한동안은 메모리를 할당받지 않아도 된다.
단 : 5개만 작성하려고 해도, 꼭 50개를 할당받아야 한다.
public interface List<E> {
void add(E item);
E get(int index);
void remove(int index);
int size();
boolean isEmpty();
void clear();
}
// List를 구현할 때 꼭 필요한 요소들
***ArrayList와 LinkedList의 내부 구현은 아예 다른데, add하고 remove하면 동작하는 행동은 같다***
***Open And Close***
Book.java ← → Book.csv


Books.java ← → App.java
★ forEach()
★ compareTo()











































Module 15 객체지향 프로그래밍














'✎NHN Academy | JAVA' 카테고리의 다른 글
| NHN Academy - 2024.09.04(Wed) (0) | 2024.09.04 |
|---|---|
| NHN Academy - 2024.09.03(Tue) (0) | 2024.09.03 |
| NHN Academy - 2024.08.30(Fri) (0) | 2024.08.30 |
| NHN Academy - 2024.08.29(Thu) (0) | 2024.08.29 |
| NHN Academy - 2024.08.28(Wed) (1) | 2024.08.28 |