14. Collections, Maps, Iterators
·
2-1/객체지향 - java
Collection : 여러 원소들을 담을 수 있는 자료구조 ( = 인터페이스 . 각 자료구조들은 Collection인터페이스를 구현한 것이고, 이때 iterator가 사용된다 ) 세 가지 큰 분류 인터페이스 = List / Set / Map 1. List 인터페이스 : 순서가 있는 데이터 집합, 중복허용 o ->구현 클래스 : Linked List, Stack, Queue, ArrayList, Vector • LinkedList : 저장할 요소를 노드로 만들어 값과 포인터를 저장함. 삽입, 삭제 빠르나 탐색이 느리다. 단일/이중연결리스트 존재 • Vector : 연결리스트와 같은 동작을 수행, Thread-safe ! 동기화를 지원함. 한번에 한 스레드만 vector호출가능. 그치만 속도는 연결리스트보..
디자인패턴 2 - Observer & Decorator
·
2-1/객체지향 - java
개념 : 객체의 결합을 통해 기능을 동적으로 유연하게 확장할 수 있게 하는 패턴 - 기본 기능에 추가할 수 잇는 기능의 종류가 많이 존재 (샷추가 같은거) -> 추가 기능을 Decorator 클래스로 정의한 후 -> 필요한 Decorator 객체를 조합하여 추가 기능의 조합을 설계함 ! - 음료수 처럼 기본 abstract 클래스 하나를 만듦 - 각 음료는 그걸 상속 - 첨가 옵션들은 1. Beverage (기본 component 클래스) 를 상속한 기본Decorator(추상)클래스만듦 2. 각 옵션은 1클래스를 상속함 -> 각 옵션 클래스들은 beverage 객체를 각각 가지고 있음 -> 해당 음료에 해당 옵션 추가한걸 리턴하는 함수 구현 Observer Pattern : 한 객체의 상태가 바뀔경우, ..
Design pattern - Singleton
·
2-1/객체지향 - java
Design patter = 소프트웨어 설계할 때 자주 발생하는 문제들에 재사용할 수 있는 훌륭한 해결책 = 가이드로 사용할 수 있는 모델 혹은 설계 => 특정 상황에서 일반적인 문제에 대한 입증된 솔루션 ! - 이미 해결된 문제를 처리하기 위한 툴킷을 제공 - 소프트웨어 문제를 어떻게 해결할지 생각하는데 도움을 줌 - 23개의 디자인 패턴을 정리하고, 다음 3가지로 분류함 1. Creational(생성) : 객체 생성과 관련된 패턴 2. Structural(구조) : 클래스나 객체를 조합해 더 큰 구조를 만드는 패턴 3. Behavioral(행위) : 객체나 클래스 사이의 알고리즘이나, 책임 분재에 관련된 패턴 Singleton = 한 클래스에 대해 객체를 하나만 !! 생성할 수 있도록 한 것 -> 어..
14- ArrayList , Generics
·
2-1/객체지향 - java
ArrayList Class - java의 standard library class (java.util.ArrayList 에 있음) (lang이 기본으로 되는거고, 저거는 임포트 해줘야됨 ^^) = 동적 데이터 구조 -> 아이템이 리스트에서 추가되거나 삭제될 수 있고, 이때 배열 길이가 늘어나거나 줄어든다! -> 실행동안 배열의 길이를 변경할 수 있다는 점 을 제외하면 일반 배열과 동일한 용도로 사용됨! ( 일반적인 array : 초기 크기가 고정되어있으므로 정적 데이터 구조) • 구현 ; array를 private 멤버로 만들어 구현. 꽉차면 새로운 배열에 데이터를 옮기는 방식! - base type은 class type! (그래서 기본 자료형(primitive type)으로 배열 만들면 Integer..
Interfaces and Inner Classes
·
2-1/객체지향 - java
Interface - 추상 메소드의 집합, 일종의 추상 클래스 (extreme case of 추상클래스) - 실제로 구현된 게 전혀없는 기본 설계도 - 객체 생성 불가 ! - 클래스 작성에 도움을 줄 목적으로 사용. 미리 정해진 규칙에 맞게 설계하도록! • 클래스와 공통 - 여러 메소드 포함 가능 - .java 확장자 가진 파일로 저장 - 파일이름과 인터페이스 이름 일치해야함 - byte code는 .class파일에 • 클래스와의 차이 - 인터페이스는 인스턴스화 불가 - 생성자 포함xx - 인스턴스 변수 포함 불가 ; static final 만 가능 !! - 모든 메소드는 추상메소드 규칙 • 인터페이스는 객체화 불가!!(당연) • 인터페이스는 무조건 public • 인터페이스는 type임 -> 함수의 매..
19- Threads
·
2-1/객체지향 - java
프로세스 메모리를 할당받아 실행중인 프로그램. 운영체제로부터 실행에 필요한 메모리를 할당받아 어플리케이션의 코드를 실행 Thread - 하나의 프로세스 내부에서 독립적으로 실행되는 작업 단위. 프로세스 내에서 실행되는 흐름의 단위. - 프로세스 내부에 thread가 한개 -> 단일 스레드. single thread / 두개 이상 -> multi Thread - 서로 독립적. 오류발생해도 서로 영향x - 하나의 스레드 내부에서 작업 처리 단계는 순차적! -JVM에 의해 하나의 프로세스 발생 -> 메인 쓰레드가 main함수 실행하면서 어플리케이션 실행됨 여기에 다른 thread가 없을 경우 single thread 이고, 메인 스레드 내에서 다른 thread들을 만들게 되면 multiThread되는거임 (m..
Chap 9. Exception handling
·
2-1/객체지향 - java
Exception = 프로그램의 정상적인 수행 도중에 발생할 수 있는 오류 ! 이거 발생 -> 프로그램 종료 (exception 발생 - 프로그램이 이 exception catch를 실패하면 충돌이 일어나서 프로그램 종료! ) 이거 handling -> 프로그램 종료되지 않고 실행이 유지되도록 할 수 ㅇ handling 방안 1. try-catch 문 try{ //예외가 발생할 것 같은 코드 //exception이 발생하면 try안의 남은 코드들은 건너뛰어짐 } catch(Exception e){ //예외가 발생할 경우 어떻게 할 것인지 } finally{ //항상 실행되는 부분 } 예외 발생되는 말든 결국 이부분 실행 후에는 try-catch블록 이후의 코드들을 실행한다~~^^ -여러개의 catch 블..
Polymorphism and abstract classes
·
2-1/객체지향 - java
* OOP 의 세가지 중요 특징 - encapsulation - inheritance - polymorphism ! (다형성) Polymorphism = 하나의 객체가 여러 가지 타입을 가질 수 있는 것을 의미함 ! -> 부모 class type에 자식 클래스타입의 인스턴스 참조할 수 ㅇ ! = late binding 매커니즘을 통해 하나의 메소드 이름에 많은 의미를 연결하는 기능 ! -> late binding / dynamic binding 이라는 특별한 매커니즘을 통해 이루어진다 * binding = 메소드 호출과 메소드 정의를 연결하는 과정 ! 어떤 함수 부를지 결정하는 것 ( 프로그래머가 ​코딩을 해서 컴파일을 하게 되면 프로그래머가 값을 변경할 수 없는 상태가 되는 것) ♡ early(stat..
Chap 7. Inheritance (상속)
·
2-1/객체지향 - java
= OOP 의 기본 개념 (encapsulation & inheritance) = 어떤 class에서 새 class를 만드는 것 -> 자식 class는 부모 class의 모든 것들을 가지고 잇고 추가로 만들 수 있음 -> hierarchy 가 생긴다 ; 공통인 특징을 가지고 있고 어떤 애들은 각자 세분화된 특징을 가지고 있다 parent class = base class = super class -> child class = derived class - 상속은 반복될 수 잇다 -> child도 다른 애의 parent가 될 수 ㅇ - 부모측 = ancestor , 자식측 = descendent • 상속 하는 방법 public class classname extends parentName { } • inst..
Chap 6. Arrays ..
·
2-1/객체지향 - java
Array = collection of indexed variables = 특별한 타입의 object • 선언 int[] arr = new int[5]; 이렇게 선언 !! -> 모든 값은 해당 자료형의 zero 값으로 초기화 됨 ( int : 0, float: 0, class: NULL) ( 거의 다 기본 값으로 자동 초기화가 되넹 머만안돼? local variable !) * 선언과 동시에 초기화도 가눙 -> int [] arr = { 1,2, 3};이렇게 가능 * 크기 고정 안하고 입력으로도 받을 수 있음 • 배열의 각 변수 = indexed variable • 배열은 object 이다 ! - length를 instance variable로 가짐 -> arr.length 이렇게 접근 (이건 metho..