자동 재생
자동 완료 표시
이전 강의 보기
완료하고 다음 강의 보기
COMP2500: 개체지향 프로그래밍 및 설계 (Java)
과목 소개
이 과목에서 사용하는 서비스 및 도구 (6:44)
질문하는 법
강의 시청 및 노트 정리 (5:16)
중요 정보 (5:12)
실습과 과제 진행하기 (7:49)
부정행위 금지와 코딩표준 (5:21)
질문하는 법 (6:07)
선수 과목과 슬라이드 표기법 (3:08)
이 과목에서 배우는 내용 (10:42)
다수설/소수설을 알아야 하는 이유 (7:22)
Java 소개 (8:51)
수업에 도움되는 자료
참고자료 안내
동영상 강좌 관련 질문 안내
[Teachable ONLY!] 추천인 프로그램
Java 언어의 기본 문법
메인 함수 (5:40)
출력문과 가변 인자 (6:16)
패키지 (8:42)
빌드 및 실행 (10:37)
패키지 사용하기 (3:49)
복습 퀴즈
Java의 실행 모델 (6:46)
Java가 인기가 있었던 이유 (3:38)
정수 자료형 (5:31)
unsigned가 없어서 생기는 문제 (8:29)
char, boolean, String (4:44)
복습 퀴즈 1
복습 퀴즈 2
리터럴 (4:29)
final 키워드 (6:20)
주석, 연산자 우선순위, 산술 연산자 (5:46)
대입 연산자, 논리 연산자, 캐스팅 (8:07)
영상 퀴즈 1
영상 퀴즈 2
영상 퀴즈 3
영상 퀴즈 4
문자열 비교 (10:09)
복습 퀴즈 1
복습 퀴즈 2
조건문 (3:15)
복습 퀴즈
반복문 (5:53)
영상 퀴즈
참조형 인자, 열거형 (11:44)
복습 퀴즈
람다 (1:59)
모듈 (9:39)
정리 (2:46)
개체지향 프로그래밍의 필요성
구조체의 한계 (9:39)
사람이 세상을 인지하는 법 (8:39)
개체지향 프로그래밍 (7:52)
OOP는 주관적 (5:08)
OOP 토론 시 피해야 할 사람 (16:41)
복습 퀴즈
OOP의 특성 1 (6:06)
OOP의 특성 2 (7:09)
OOP의 특성 3 (7:04)
복습 퀴즈
클래스
클래스와 개체 (7:38)
간단한 클래스 코드 (8:32)
복습 퀴즈
개체 만들기와 메모리 (8:47)
개체 멤버에 접근하기, 참조형 (12:34)
복습 퀴즈
멤버 변수의 초깃값, . 연산자 (5:28)
개체의 메서드 호출하기 (8:08)
복습 퀴즈
생성자 (11:23)
생성자로 초기화를 해야 하는 이유 (11:01)
코드보기: Vehicle 클래스 (13:24)
복습 퀴즈
정리 (2:02)
접근 제어자 (9:37)
일반적인 접근 제어자, private 메서드의 용도 (7:20)
패키지 접근 제어자 (5:10)
복습 퀴즈
getter, setter (8:47)
setter 베스트 프랙티스 (10:50)
복습 퀴즈
캡슐화, 추상화 (9:02)
정리 (1:56)
개체 모델링 1
OO 설계에서 처음 만나는 난관 (3:54)
클래스 다이어그램 소개 (8:31)
클래스 다이어그램 (4:59)
모델링할 문제 소개 (1:54)
모델링 1: 분무기 상태 (4:30)
모델링 2: 분무기 동작 (9:31)
모델링 3: 분무기 용량 추가 (6:53)
모델링 4: 수도꼭지 (5:44)
모델링 5: 화분 (10:12)
모델링 6: OO적 상호작용 (8:50)
모델링 7: 부품으로 분리해보기 (9:31)
유연성 높은 설계가 최고가 아니다! (7:06)
복습 퀴즈
기본기의 중요성 (3:04)
모델링 8: 다시 사용성 높이기 (6:46)
코드보기: POCU Tunes (12:00)
정리 (2:43)
static, 싱글턴, 내포 클래스
정적 메서드 (7:30)
정적 클래스와 생성자 (7:16)
정적 멤버 변수 (5:25)
정적 메서드에서 멤버 변수 접근하기 (8:07)
코드보기: 정적 Logger 클래스 (10:49)
복습 퀴즈 1
복습 퀴즈 2
static에 대한 비판 (8:11)
디자인 패턴 소개 (10:11)
디자인 패턴의 장단점 (8:20)
디자인 패턴의 실제 목적 (7:09)
디자인 패턴이 비판받는 실제 이유 (8:03)
디자인 패턴 공부법 (9:36)
싱글턴 패턴 (4:50)
싱글턴 패턴 예 (5:21)
싱글턴 패턴 vs static (6:35)
싱글턴 패턴의 응용 (11:24)
코드보기: 싱글턴 Logger 클래스 (4:28)
내포 클래스 소개 (3:56)
내포 클래스를 사용 안 할 경우 (6:50)
비정적 내포 클래스를 사용할 경우 (5:21)
정적 내포 클래스를 사용할 경우 (5:50)
복습 퀴즈
정리 (6:58)
상속
상속, 부모/자식 클래스 소개 (9:19)
상속 예 소개 (4:25)
중복 코드를 클래스로 분리하기 (3:55)
상속하기 (4:26)
영상 퀴즈
생성자 호출 순서 (10:40)
부모 클래스의 독립성, 클래스 다이어그램 (5:21)
부모 멤버에 접근하기 (10:56)
복습 퀴즈
상속의 상속 (7:37)
복습 퀴즈
is-a, has-a 관계 (5:11)
is-a 관계와 부모형 변수 (8:18)
상속과 명시적 캐스팅 (4:25)
복습 퀴즈
instanceof 연산자 (5:46)
복습 퀴즈
클래스 정보와 Object 클래스 (6:52)
코드보기: Base Entity (10:19)
코드보기: 클래스 정보 찾기 (5:58)
정리 (4:15)
상속을 이용한 개체 모델링
사람에게 상속이 어려운 이유 (4:33)
상속을 이해하는 방법 (5:42)
모델링할 대상 소개 (1:31)
아날로그 벽시계의 기본 상태와 메서드 (5:45)
setter에서 예외 던지기 (4:29)
예외 없이 시간 바꾸기 (8:03)
받아올림도 하는 시간 바꾸기 (6:00)
시간적 결합을 해결한 시간 바꾸기 (9:57)
아날로그 벽시계의 기타 메서드들 (2:09)
디지털 벽시계 분석 및 공통부분 찾기 (9:39)
오전/오후 구분하기 (8:03)
24시간 체제를 사용하려면? (2:59)
디지털 벽시계 시간 맞추기 (3:15)
7 세그먼트 디스플레이 추가하기 (5:54)
상속을 하는 프로그래머의 사고방식 (2:57)
손목시계 추가하기와 다중 상속 (7:53)
다중 상속이 생기는 이유와 해결법 (3:54)
깊은 상속의 어려움과 생물 분류 (5:37)
어류 모델링 (7:34)
개, 새 (5:59)
정리 (2:26)
상속 vs 컴포지션
OO에서 재사용성을 중요시하는 이유 (3:27)
클래스를 재사용하면 좋은 점 (9:27)
OO 모델링 실력 높이는 법 (9:51)
상속 vs 컴포지션 선택 시 4가지 기준 (5:43)
상속 vs 컴포지션: 메모리 (11:57)
복습 퀴즈
상속 vs 컴포지션: 다형성 (2:26)
상속 vs 컴포지션: 유지보수 (3:50)
상속 vs 컴포지션: 일반적인 경우 (7:03)
복습 퀴즈
코드보기: 그래픽 개체 그리기 (6:46)
상속과 잦은 클래스 변경 (5:58)
영상 퀴즈
엔티티 컴포넌트 시스템 (9:21)
복습 퀴즈
코드보기: 텍스트 파일로부터 엔티티 만들기 (4:41)
정리 (3:56)
다형성
다형성, polymorphism의 단어 뜻 (4:21)
간단한 다형성 예 코드로 옮기기 (8:51)
무늬 vs 실체 (3:20)
영상 퀴즈
다형성의 의미 풀이 (3:08)
코드로 본 다형성의 의미 (7:35)
복습 퀴즈
오버라이딩은 선택사항 (4:35)
다형성의 장점 (9:34)
늦은 바인딩 vs 이른 바인딩 (5:55)
C 함수 포인터와의 비교 (8:51)
바인딩과 성능, 오버라이딩 막기 (14:00)
복습 퀴즈
다형성 적용 예 (6:42)
코드보기: 마법사 (13:00)
Object 클래스와 toString() (4:46)
equals() 메서드 (8:06)
hashCode() 메서드 (6:10)
코드보기: 개체 비교 (7:19)
코드보기: 해시값 계산 (5:22)
정리 (6:31)
추상 메서드/클래스
다형성, 상속, 추상화의 관계 (4:58)
다형적인 Monster 클래스 구현 (6:17)
말 안 듣는 자식 클래스 (7:09)
현재 구조의 문제점 (4:06)
추상 메서드/클래스로 문제 고치기 (7:44)
구체 클래스 vs 추상 클래스 (5:58)
복습 퀴즈
코드보기: 추상 BaseEntity (2:41)
인터페이스
인터페이스의 사전적 의미 (3:26)
인터페이스와 함수 포인터 (8:34)
인터페이스는 순수 추상 클래스 (6:09)
추상 클래스를 인터페이스로 바꾸기 (4:54)
인터페이스 미구현과 컴파일 오류 (3:32)
영상 퀴즈
Java 어노테이션 (6:54)
인터페이스의 접근 제어자 (5:21)
인터페이스의 이름 (5:32)
여러 인터페이스 구현하기 (7:42)
인터페이스와 다중 상속 (8:03)
복습 퀴즈
코드보기: 위젯(Widget) (9:27)
Object.clone() (8:27)
코드보기: 복사 생성자 (4:05)
구체 클래스 vs 인터페이스 (1:21)
복습 퀴즈
정리 (5:36)
인터페이스 vs 구현
의존성과 결합도 (7:26)
OO에서 논하는 결합도 (8:57)
영상 퀴즈
결합도 판정 (6:41)
의존성 주입(DI) (6:05)
상속 관계에서의 결합도 (6:21)
복습 퀴즈
디커플링이 적합한 곳들 (3:46)
디커플링의 단점 1 (7:51)
디커플링의 단점 2 (7:02)
모든 건 인터페이스여야 한다는 주장 (8:57)
인터페이스의 잘못된 이해 (8:14)
인터페이스에 대해 프로그래밍하라는 의미 (1:30)
인터페이스의 올바른 정의 (7:45)
이클립스 API와 인터페이스 (9:29)
중요한 건 클라이언트와의 약속 (10:13)
변화에 대비해야 하는가? (3:22)
복습 퀴즈
정리 (5:01)
디자인 패턴
디자인 패턴 공부 시 주의할 점 (5:25)
팩토리 메서드 패턴 (4:15)
다형적인 팩토리 메서드 패턴 1 (5:18)
다형적인 팩토리 메서드 패턴 2 (5:16)
빌더 패턴과 StringBuilder (4:44)
빌더 패턴과 플루언트 인터페이스 (5:30)
잘못 사용하는 빌더 패턴 (4:11)
영상 퀴즈
빌더 패턴 없는 올바른 문제 해결법 (6:28)
다형적인 빌더 패턴 (9:34)
시퀀스 다이어그램 (7:30)
래퍼 패턴 (8:34)
래퍼 패턴과 그래픽 API (9:05)
래퍼 패턴과 DTO (5:02)
프록시 패턴 (4:56)
프록시 패턴과 이미지 로딩 (5:07)
즉시로딩 vs 지연로딩 (8:27)
프록시 패턴의 현대화 예 (5:24)
책임 연쇄 패턴과 로거 (9:04)
올바른 책임 연쇄 패턴 예 (6:36)
옵저버 패턴과 pub-sub 패턴 (5:27)
옵저버 패턴 예 (5:50)
옵저버 패턴과 메모리 누수 문제 (5:19)
복습 퀴즈
정리 (3:10)
예외
try/catch/finally (6:30)
try/catch 사용 예 (4:14)
finally 사용 예 (6:29)
예외 다시 던지기(rethrow) (4:01)
나만의 예외 만들기 (4:41)
오류를 방치하면 일어나는 일 (10:19)
예외 처리를 제대로 하지 못하는 이유 (7:59)
Java의 checked 예외 (7:12)
checked 예외의 존재의의 (5:06)
예외로부터 안전한 프로그래밍 (5:37)
근래의 예외 처리 트렌드 (6:19)
잘못된 예외 처리 가이드를 조심하자 (7:44)
제어 흐름용으로 예외를 사용하지 말 것 (6:53)
예외적인 상황에만 예외를 사용해야 하는 경우 (8:37)
오류 상황, 예외 상황 (5:49)
4가지 오류 상황 처리법 (5:24)
오류 상황을 피하는 게 최고 (9:59)
'무시'와 '종료' 방법 (6:02)
'수정'과 '예외' 방법 (7:32)
예외는 OO의 일부가 아니다 (5:16)
잘못된 예외처리보다 크래시가 낫다 (9:19)
프로그램 종료도 올바른 방법이다 (3:45)
4가지 처리법의 순위 (7:30)
예측 가능한 상황의 처리법 (7:17)
예측 불가한 상황의 처리법 (4:08)
정리 (3:06)
SOLID 설계 정신
SOLID 소개 (7:55)
SOLID로 이룰 수 있는 것 한 가지 (8:19)
단일 책임 (7:07)
단일 책임 개념의 의의 (8:35)
개방-폐쇄 (8:48)
리스코프 치환 (10:00)
코드보기: 스택 (7:21)
인터페이스 분리, 의존 역전 (8:54)
정리 (2:49)
소수설에서 태어난 다양한 주장들
ADT와 PDA (8:32)
Alan Kay가 개체를 바라보는 입장 (7:27)
OO의 창시자 논쟁 (4:08)
스몰토크의 메서드 호출 (7:29)
정적 타입에 대한 반대 (9:25)
페어 프로그래밍 (8:45)
지속적 통합(CI) (7:49)
테스트 주도 개발(TDD) (8:51)
TDD와 경제논리 (8:44)
효과적인 테스트 (10:03)
단위 테스트의 용도 (7:07)
단위 테스트를 위한 다형성 (3:32)
동적 타입과 TDD (8:35)
강의를 마무리 하며
에필로그 (2:52)
Teach online with
디커플링의 단점 1
강의 내용 잠김
이미 강좌를 등록하셨다면,
로그인 해주세요.
.
잠금을 해제하려면 강좌를 등록하세요!