윤준영, 더불어 성장하는 개발자    카테고리    태그

3주차 강의 복습

  • Key-Value 대응 관계에 있는 데이터들의 모임
  • put(key, value) : 데이터 추가
  • get(key) : key에 해당하는 value 값을 반환
  • getOrDefault(key, default_value) :key에 해당하는 값을 가져오되, 만약 값이 존재하지 않을 경우 default_key 를 반환
  • containsKey(key) : 해당 맵의 key 여부 확인 가능
  • remove(key) : 해당 맵에서 key 에 해당하는 아이템을 삭제한 후 value 값을 반환
  • size() : 해당 맵의 아이템 개수를 반환
  • keySet() : 해당 맵의 key 를 모아서 반환

예외처리

1
2
3
4
5
6
7
8
9
try {
	// code
} catch(exception1) {
	// code
} catch(exception2) {
	// code
} finally {
	// code
}
  • 프로그램을 작성하다보면, 예상하지 못한 다양한 오류가 발생할 수 있음
  • 예외처리를 통해 오류가 발생할 경우 해당 오류에 적합한 액션을 취할 수 있도록 함
  • try 내부에서 오류 발생 유무에 따라 catch 문 내부의 코드를 실행
  • finally 문을 통해 오류의 발생 유무에 상관없이 항상 실행되는 코드 작성가능

객체 지향

  • 객체(Object) : 자료(특성)와 이를 대상으로 처리하는 연산(메서드)을 하나로 묶어 만든 요소. 프로그램을 구성하는 실체.
  • 객체 지향 프로그래밍에서 프로그램은 여러 개의 객체로 구성
  • 장점
    • 신뢰성있는 소프트웨어를 쉽게 작성 가능
    • 코드 재사용 용이함
    • 업그레이드 & 디버깅이 쉬움
  • 특징
    • 추상화 : 객체에서 공통된 속성과 행위를 추출하여 타입을 정의하는 과정
    • 캡슐화 : 관련된 데이터와 코드가 하나의 묶음으로 정리되어 있음으로 객체의 실제 구현 내용을 감춰 객체의 내부를 보호
    • 상속 : 부모 클래스를 이어받아, 자식 클래스를 생성
    • 다형성 : 하나의 변수명, 메서드명이 상황에 따라 다른 의미로 해석될 수 있는 것

객체 지향 설계 원칙(SOLID)

  • 단일 책임원칙 (Single Responsibility Principle)
    • 하나의 클래스는 하나의 책임만을 가져야 함
  • 개방-폐쇄 원칙 (Open/Closed Principle)
    • 소프트웨어 요소는 확장에는 열려 있으나, 변경에는 닫혀 있어야 함
    • 기능을 변경하거나 확장할 수 있으면서 코드는 수정하지 않음
  • 리스코프 치환 원칙 (Liskov Substitution Principle)
    • 상위 타입의 객체를 하위 타입의 객체로 치환해도 프로그램은 정상 작동해야 함
  • 인터페이스 분리 원칙 (Interface Segregation Principle)
    • 하나의 인터페이스 보다 여러 개의 인터페이스로 분리하는 것이 좋음
    • 인터페이스는 사용자(클라이언트)를 기준으로 분리
  • 의존관계 역전 원칙 (Dependency Inversion Principle)
    • 고수준 모듈은 저수준 모듈의 구현에 의존해서는 안됨
    • 저수준 모듈은 고수준 모듈에서 정의한 추상 타입에 의존해야 함

클래스 상속

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
class Animal {
	String name;
    
    public void setName(String name) {
    	this.name = name;
    }
}

class Dog extends Animal { // Animal 클래스 상속받음
	void sleep() {
    	System.out.println(this.name + " zzz...");
    }
}

public class Main {
	public static void main(String[] args) {
    	Dog dog = new Dog();
        dog.setName("poppy");
        System.out.println(dog.name); // poppy
        dog.sleep(); // poppy zzz...
    }
}

메서드 오버로딩

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
class Animal {
	String name;
    
    public void setName(String name) {
    	this.name = name;
    }
}

class Dog extends Animal { // Animal 클래스 상속받음
	void sleep() {
    	System.out.println(this.name + " zzz...");
    }
    void sleep(int hour) {
    	System.out.println(this.name + " zzz for " + hour);
    }
}

public class Main {
	public static void main(String[] args) {
    	Dog dog = new Dog();
        dog.setName("poppy");
        dog.sleep(); // poppy zzz...
		dog.sleep(4); // poppy zzz for 4
    }
}

접근 제어자

  • private
    • 선언된 해당 클래스 내에서만 접근 가능
  • default
    • 패키지 내에서만 접근 가능
    • 접근 제어자를 별도로 설정하지 않으면 자동으로 default로 설정
  • protected
    • 동일 패키지의 클래스 또는 해당 클래스를 상속받은 다른 패키지의 클래스에서만 접근 가능
  • public
    • 어떤 클래스든 접근 가능

2주차 강의 복습

Apple PencilKit Framework에 대한 고찰

Comments powered by Disqus.

바로가기