Udemy
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
Development
Web Development Data Science Mobile Development Programming Languages Game Development Database Design & Development Software Testing Software Engineering Development Tools No-Code Development
Business
Entrepreneurship Communications Management Sales Business Strategy Operations Project Management Business Law Business Analytics & Intelligence Human Resources Industry E-Commerce Media Real Estate Other Business
Finance & Accounting
Accounting & Bookkeeping Compliance Cryptocurrency & Blockchain Economics Finance Finance Cert & Exam Prep Financial Modeling & Analysis Investing & Trading Money Management Tools Taxes Other Finance & Accounting
IT & Software
IT Certification Network & Security Hardware Operating Systems Other IT & Software
Office Productivity
Microsoft Apple Google SAP Oracle Other Office Productivity
Personal Development
Personal Transformation Personal Productivity Leadership Career Development Parenting & Relationships Happiness Esoteric Practices Religion & Spirituality Personal Brand Building Creativity Influence Self Esteem & Confidence Stress Management Memory & Study Skills Motivation Other Personal Development
Design
Web Design Graphic Design & Illustration Design Tools User Experience Design Game Design Design Thinking 3D & Animation Fashion Design Architectural Design Interior Design Other Design
Marketing
Digital Marketing Search Engine Optimization Social Media Marketing Branding Marketing Fundamentals Marketing Analytics & Automation Public Relations Advertising Video & Mobile Marketing Content Marketing Growth Hacking Affiliate Marketing Product Marketing Other Marketing
Lifestyle
Arts & Crafts Beauty & Makeup Esoteric Practices Food & Beverage Gaming Home Improvement Pet Care & Training Travel Other Lifestyle
Photography & Video
Digital Photography Photography Portrait Photography Photography Tools Commercial Photography Video Design Other Photography & Video
Health & Fitness
Fitness General Health Sports Nutrition Yoga Mental Health Dieting Self Defense Safety & First Aid Dance Meditation Other Health & Fitness
Music
Instruments Music Production Music Fundamentals Vocal Music Techniques Music Software Other Music
Teaching & Academics
Engineering Humanities Math Science Online Education Social Science Language Teacher Training Test Prep Other Teaching & Academics
AWS Certification Microsoft Certification AWS Certified Solutions Architect - Associate AWS Certified Cloud Practitioner CompTIA A+ Cisco CCNA Amazon AWS CompTIA Security+ AWS Certified Developer - Associate
Graphic Design Photoshop Adobe Illustrator Drawing Digital Painting InDesign Character Design Canva Figure Drawing
Life Coach Training Neuro-Linguistic Programming Mindfulness Personal Development Personal Transformation Life Purpose Meditation Coaching Neuroscience
Web Development JavaScript React CSS Angular PHP WordPress Node.Js Python
Google Flutter Android Development iOS Development Swift React Native Dart Programming Language Mobile Development Kotlin SwiftUI
Digital Marketing Google Ads (Adwords) Social Media Marketing Google Ads (AdWords) Certification Marketing Strategy Internet Marketing YouTube Marketing Email Marketing Retargeting
SQL Microsoft Power BI Tableau Business Analysis Business Intelligence MySQL Data Analysis Data Modeling Big Data
Business Fundamentals Entrepreneurship Fundamentals Business Strategy Online Business Business Plan Startup Freelancing Blogging Home Business
Unity Game Development Fundamentals Unreal Engine C# 3D Game Development C++ Unreal Engine Blueprints 2D Game Development Blender
30-Day Money-Back Guarantee

This course includes:

  • 30.5 hours on-demand video
  • Full lifetime access
  • Access on mobile and TV
Development Software Engineering Java

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

이 과목은 '개체지향 프로그래밍(OOP)'과 '개체지향 분석 및 설계(OOAD)'를 한꺼번에 가르치는 과목으로 OO 언어의 사용법을 배우는데 그치지 않고 실세계를 컴퓨터 프로그램의 개체로 모델링할 수 있는 능력까지
Bestseller
Rating: 4.7 out of 54.7 (28 ratings)
92 students
Created by Pope Kim
Last updated 5/2020
Korean
30-Day Money-Back Guarantee

What you'll learn

  • 객체지향 프로그래밍
  • 올바른 객체지향 설계
  • 디자인 패턴

Course content

18 sections • 271 lectures • 30h 20m total length

  • Preview06:44
  • Preview05:16
  • Preview05:12
  • Preview07:49
  • Preview05:22
  • Preview06:07
  • Preview03:08
  • Preview10:42
  • Preview07:22
  • Preview08:51

  • 메인 함수
    05:40
  • 출력문과 가변 인자
    06:17
  • 패키지
    08:42
  • 빌드 및 실행
    10:37
  • 패키지 사용하기
    03:49
  • 복습 퀴즈
    3 questions
  • Preview06: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

  • 구조체의 한계
    09:39
  • 사람이 세상을 인지하는 법
    08:39
  • Preview07:52
  • OOP는 주관적
    05:08
  • OOP 토론 시 피해야 할 사람
    16:41
  • 복습 퀴즈
    2 questions
  • OOP의 특성 1
    06:06
  • OOP의 특성 2
    07:09
  • OOP의 특성 3
    07:04
  • 복습 퀴즈
    3 questions

  • 클래스와 개체
    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

  • OO 설계에서 처음 만나는 난관
    03:54
  • 클래스 다이어그램 소개
    08:31
  • 클래스 다이어그램
    04:59
  • 모델링할 문제 소개
    01:54
  • Preview04: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

  • 정적 메서드
    07:30
  • 정적 클래스와 생성자
    07:16
  • 정적 멤버 변수
    05:25
  • 정적 메서드에서 멤버 변수 접근하기
    08:07
  • 코드보기: 정적 Logger 클래스
    10:49
  • 복습 퀴즈
    3 questions
  • static에 대한 비판
    08:11
  • 디자인 패턴 소개
    10:11
  • Preview08: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

  • 상속, 부모/자식 클래스 소개
    09:19
  • 상속 예 소개
    04:25
  • 중복 코드를 클래스로 분리하기
    03:55
  • 상속하기
    04:15
  • 영상 퀴즈
    1 question
  • 생성자 호출 순서
    10:40
  • 부모 클래스의 독립성, 클래스 다이어그램
    05:21
  • 부모 멤버에 접근하기
    10:56
  • 복습 퀴즈
    1 question
  • 상속의 상속
    07:37
  • 복습 퀴즈
    1 question
  • Preview05: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

  • 사람에게 상속이 어려운 이유
    04:33
  • Preview05: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

  • OO에서 재사용성을 중요시하는 이유
    03:27
  • 클래스를 재사용하면 좋은 점
    09:28
  • OO 모델링 실력 높이는 법
    09:51
  • 상속 vs 컴포지션 선택 시 4가지 기준
    05:43
  • Preview11: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

  • 다형성, 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 프로그래밍과 설계를 배우고 싶으신 분들
  • 컴퓨터 공학의 기본기를 배우고 싶은 분들
  • 프로그래머로서 평생 커리어를 꿈꾸는 분들

Instructor

Pope Kim
CTO, Software Architect & Educator
Pope Kim
  • 4.5 Instructor Rating
  • 1,076 Reviews
  • 1,500 Students
  • 5 Courses

Pope Kim is an experienced software engineer, architect, and educator.

After shipping numerous AAA game titles, including FIFA and Halo as a 3D rendering engineer, he moved to the web industry to lead multi-million dollar projects at Staples. Then he accepted a CTO position at a Silicon Valley startup company where he built and managed engineering teams across three different countries. With his strong leadership, the company's valuation had increased over 25,000 times during his stay.

Outside engineering career, he also taught at multiple universities. His most recent position in education was Faculty at BCIT, which he resigned from to make his own computer science education service, https://pocu.academy

  • Udemy for Business
  • Teach on Udemy
  • Get the app
  • About us
  • Contact us
  • Careers
  • Blog
  • Help and Support
  • Affiliate
  • Terms
  • Privacy policy
  • Cookie settings
  • Sitemap
  • Featured courses
Udemy
© 2021 Udemy, Inc.