개체지향 프로그래밍 및 설계 (Java)
5.0 (4 ratings)
Course Ratings are calculated from individual students’ ratings and a variety of other signals, like age of rating and reliability, to ensure that they reflect course quality fairly and accurately.
19 students enrolled

개체지향 프로그래밍 및 설계 (Java)

이 과목은 '개체지향 프로그래밍(OOP)'과 '개체지향 분석 및 설계(OOAD)'를 한꺼번에 가르치는 과목으로 OO 언어의 사용법을 배우는데 그치지 않고 실세계를 컴퓨터 프로그램의 개체로 모델링할 수 있는 능력까지
Bestseller
5.0 (4 ratings)
Course Ratings are calculated from individual students’ ratings and a variety of other signals, like age of rating and reliability, to ensure that they reflect course quality fairly and accurately.
19 students enrolled
Created by Pope Kim
Last updated 5/2020
Korean
Price: $199.99
30-Day Money-Back Guarantee
This course includes
  • 30.5 hours on-demand video
  • Full lifetime access
  • Access on mobile and TV
  • Certificate of Completion
Training 5 or more people?

Get your team access to 4,000+ top Udemy courses anytime, anywhere.

Try Udemy for Business
What you'll learn
  • 객체지향 프로그래밍
  • 올바른 객체지향 설계
  • 디자인 패턴
Course content
Expand all 271 lectures 30:20:19
+ Java 언어의 기본 문법
21 lectures 02:14:20
메인 함수
05:40
출력문과 가변 인자
06:17
패키지
08:42
빌드 및 실행
10:37
패키지 사용하기
03:49
복습 퀴즈
3 questions
Java의 실행 모델
06:46
Java가 인기가 있었던 이유
03:38
정수 자료형
05:31
unsigned가 없어서 생기는 문제
08:29
char, boolean, String
04:44
복습 퀴즈
3 questions
리터럴
04:29
final 키워드
06:20
주석, 연산자 우선순위, 산술 연산자
05:46
대입 연산자, 논리 연산자, 캐스팅
08:07
영상 퀴즈
4 questions
문자열 비교
10:09
복습 퀴즈
2 questions
조건문
03:15
복습 퀴즈
2 questions
반복문
05:53
영상 퀴즈
1 question
참조형 인자, 열거형
11:44
복습 퀴즈
1 question
람다
01:59
모듈
09:39
정리
02:46
+ 개체지향 프로그래밍의 필요성
8 lectures 01:08:18
구조체의 한계
09:39
사람이 세상을 인지하는 법
08:39
개체지향 프로그래밍
07:52
OOP는 주관적
05:08
OOP 토론 시 피해야 할 사람
16:41
복습 퀴즈
2 questions
OOP의 특성 1
06:06
OOP의 특성 2
07:09
OOP의 특성 3
07:04
복습 퀴즈
3 questions
+ 클래스
17 lectures 02:21:41
클래스와 개체
07:38
간단한 클래스 코드
08:32
복습 퀴즈
1 question
개체 만들기와 메모리
08:47
개체 멤버에 접근하기, 참조형
12:35
복습 퀴즈
1 question
멤버 변수의 초깃값, . 연산자
05:28
개체의 메서드 호출하기
08:08
복습 퀴즈
1 question
생성자
11:23
생성자로 초기화를 해야 하는 이유
11:01
코드보기: Vehicle 클래스
13:24
복습 퀴즈
3 questions
정리
02:02
접근 제어자
09:38
일반적인 접근 제어자, private 메서드의 용도
07:20
패키지 접근 제어자
05:10
복습 퀴즈
4 questions
getter, setter
08:47
setter 베스트 프랙티스
10:50
복습 퀴즈
1 question
캡슐화, 추상화
09:02
정리
01:56
+ 개체 모델링 1
16 lectures 01:46:09
OO 설계에서 처음 만나는 난관
03:54
클래스 다이어그램 소개
08:31
클래스 다이어그램
04:59
모델링할 문제 소개
01:54
모델링 1: 분무기 상태
04:30
모델링 2: 분무기 동작
09:31
모델링 3: 분무기 용량 추가
06:54
모델링 4: 수도꼭지
05:44
모델링 5: 화분
10:12
모델링 6: OO적 상호작용
08:50
모델링 7: 부품으로 분리해보기
09:31
유연성 높은 설계가 최고가 아니다!
07:06
복습 문제
1 question
기본기의 중요성
03:04
모델링 8: 다시 사용성 높이기
06:46
코드보기: POCU Tunes
12:00
정리
02:43
+ static, 싱글턴, 내포 클래스
21 lectures 02:32:10
정적 메서드
07:30
정적 클래스와 생성자
07:16
정적 멤버 변수
05:25
정적 메서드에서 멤버 변수 접근하기
08:07
코드보기: 정적 Logger 클래스
10:49
복습 퀴즈
3 questions
static에 대한 비판
08:11
디자인 패턴 소개
10:11
디자인 패턴의 장단점
08:20
디자인 패턴의 실제 목적
07:09
디자인 패턴이 비판받는 실제 이유
08:03
디자인 패턴 공부법
09:36
싱글턴 패턴
04:50
싱글턴 패턴 예
05:21
싱글턴 패턴 vs static
06:35
싱글턴 패턴의 응용
11:24
코드보기: 싱글턴 Logger 클래스
04:28
내포 클래스 소개
03:56
내포 클래스를 사용 안 할 경우
06:50
비정적 내포 클래스를 사용할 경우
05:21
정적 내포 클래스를 사용할 경우
05:50
복습 퀴즈
1 question
정리
06:58
+ 상속
16 lectures 01:47:32
상속, 부모/자식 클래스 소개
09:19
상속 예 소개
04:25
중복 코드를 클래스로 분리하기
03:55
상속하기
04:15
영상 퀴즈
1 question
생성자 호출 순서
10:40
부모 클래스의 독립성, 클래스 다이어그램
05:21
부모 멤버에 접근하기
10:56
복습 퀴즈
1 question
상속의 상속
07:37
복습 퀴즈
1 question
is-a, has-a 관계
05:11
is-a 관계와 부모형 변수
08:18
상속과 명시적 캐스팅
04:25
복습 퀴즈
2 questions
instanceof 연산자
05:46
복습 퀴즈
1 question
클래스 정보와 Object 클래스
06:52
코드보기: Base Entity
10:19
코드보기: 클래스 정보 찾기
05:58
정리
04:15
+ 상속을 이용한 개체 모델링
21 lectures 01:54:20
사람에게 상속이 어려운 이유
04:33
상속을 이해하는 방법
05:42
모델링할 대상 소개
01:31
아날로그 벽시계의 기본 상태와 메서드
05:45
setter에서 예외 던지기
04:29
예외 없이 시간 바꾸기
08:03
받아올림도 하는 시간 바꾸기
06:00
시간적 결합을 해결한 시간 바꾸기
09:57
아날로그 벽시계의 기타 메서드들
02:10
디지털 벽시계 분석 및 공통부분 찾기
09:39
오전/오후 구분하기
08:03
24시간 체제를 사용하려면?
02:59
디지털 벽시계 시간 맞추기
03:15
7 세그먼트 디스플레이 추가하기
05:54
상속을 하는 프로그래머의 사고방식
02:57
손목시계 추가하기와 다중 상속
07:53
다중 상속이 생기는 이유와 해결법
03:54
깊은 상속의 어려움과 생물 분류
05:37
어류 모델링
07:34
개, 새
05:59
정리
02:26
+ 상속 vs 컴포지션
13 lectures 01:24:27
OO에서 재사용성을 중요시하는 이유
03:27
클래스를 재사용하면 좋은 점
09:28
OO 모델링 실력 높이는 법
09:51
상속 vs 컴포지션 선택 시 4가지 기준
05:43
상속 vs 컴포지션: 메모리
11:57
복습 퀴즈
1 question
상속 vs 컴포지션: 다형성
02:26
상속 vs 컴포지션: 유지보수
03:50
상속 vs 컴포지션: 일반적인 경우
07:03
복습 퀴즈
1 question
코드보기: 그래픽 개체 그리기
06:46
상속과 잦은 클래스 변경
05:58
영상 퀴즈
1 question
엔티티 컴포넌트 시스템
09:21
복습 퀴즈
1 question
코드보기: 텍스트 파일로부터 엔티티 만들기
04:41
정리
03:56
+ 다형성
18 lectures 02:08:06
다형성, polymorphism의 단어 뜻
04:21
간단한 다형성 예 코드로 옮기기
08:51
무늬 vs 실체
03:20
영상 퀴즈
1 question
다형성의 의미 풀이
03:08
코드로 본 다형성의 의미
07:35
복습 퀴즈
2 questions
오버라이딩은 선택사항
04:35
다형성의 장점
09:34
늦은 바인딩 vs 이른 바인딩
05:55
C 함수 포인터와의 비교
08:51
바인딩과 성능, 오버라이딩 막기
14:00
복습 퀴즈
1 question
다형성 적용 예
06:42
코드보기: 마법사
13:00
Object 클래스와 toString()
04:46
equals() 메서드
08:06
hashCode() 메서드
06:10
코드보기: 개체 비교
07:19
코드보기: 해시값 계산
05:22
정리
06:31
Requirements
  • '실무 프로그래밍 입문(C#)' 과목 수료
  • '컴퓨터 공학용 수학' 과목 수료
Description

본 비디오 강좌는 POCU 아카데미에서 진행하는 COMP2500 수업의 동영상 강의입니다.


'인간이 생각하는 방식으로 프로그래밍 하자!'라는 야심찬 목표를 가지고 시작한 개체지향 프로그래밍(OOP, Object-Oriented Programming)은 이제 주류 프로그래밍 패러다임이 되었습니다. 허나 기존의 프로그래밍 패러다임(예: 절차적 프로그래밍)에 비해 '인간이 생각하는 방식', 다른 말로 하면 '인간다움'이란 정의는 매우 주관적일 수밖에 없습니다. 각 개인이 속한 환경과 시대에 따라 세상을 보는 눈이 달라지니까요.

이 때문에 특정 OO 언어의 사용법만 익히는 것은 반쪽짜리 OOP 공부입니다. 특정 언어의 사용법은 객관적인 측면일 뿐이니까요. 이 외에 사람의 관점에서 바라본 실세계를 컴퓨터 프로그램의 개체로 모델링할 수 있는 능력(주관적인 측면)을 같이 키워나가야만 제대로 OOP를 배우는 겁니다. 후자는 개체지향 분석 및 설계(OOAD, Object-Oriented Analysis and Design)의 영역으로 본 과목은 OOP와 OOAD(이후 합쳐서 OO라고 표현)를 동시에 가르칩니다.

상술한 주관성 때문에 OO 분야에는 다양한 의견과 주장이 존재해왔습니다. 그리고 어느 시대와 진영의 자료로 공부했느냐에 따라 각 프로그래머가 OO(OOP와 OOAD를 모두 포함)를 이해하는 방식이 많이 다릅니다. 객관성을 추구하는 컴퓨터 과학/공학이라는 학문에 이런 광범위한 주관성은 많은 혼란을 야기합니다. 더 나아가 다른 주장이 나온 이유를 이해하려는 노력 없이 자신이 무비판적으로 수용하며 배운 내용에 기초하여 다른 진영이 무조건 틀렸다고 공격하는 모습들도 OO 분야에서는 종종 발견되는 건설적이지 못한 모습입니다.

이런 문제들을 해결하기 위해 본 과목은 현재 실무에서 다수설로 받아들이는 OO의 정의와 모델링/프로그래밍 기법을 배우는 외에도 이런 다양한 주장들이 나오게 된 배경과 각 주장의 장단점, 그리고 그들 사이에서 어떻게 밸런스를 잡아야 훌륭한 프로그래머가 될 수 있는지에 대한 가이드도 제공합니다.

Who this course is for:
  • 올바른 OO 프로그래밍과 설계를 배우고 싶으신 분들
  • 컴퓨터 공학의 기본기를 배우고 싶은 분들
  • 프로그래머로서 평생 커리어를 꿈꾸는 분들