14강. 추상클래스 - I - 추상클래스의 이해 - 추상클래스가 필요한 이유 - 추상클래스의 문법

Slides:



Advertisements
Similar presentations
1 03 자동제세동기 활용으로 기적을 만들어요 ! 보건안전  상황제시 : 자동제세동기가 필요해요 !  자동제세동기는 어디에 있나요 ?  기억하세요 ! 자동제세동기 사용법 ( 동영상 )  자동제세동기 사용법, 잊지 마세요 !
Advertisements

누구든지 그리스도 안에 있으면 새로운 피조물이라 이전 것은 지나 갔으니 보라 새 것이 되었도다 그런즉 고린도후서 5 장 17 절 말씀 – 아멘.
목 차 C# 언어 특징 .NET 프레임워크 C# 콘솔 프로그램 C# 윈도우 프로그램 실습 프로그래밍세미나 2.
01_ 가상 함수를 사용한 다형성의 구현 02_ 오버라이딩
요한복음 3:16.
3부 객체지향 3부에서는 자바 언어의 핵심인 객체지향의 개념과 클래스, 객체, 상속, 다형성 등의 개념에 관해 설명합니다.
4강. Servlet 맛보기 Servlet 문서 작성 하기 web.xml에 서블릿 맵핑 어노테이션을 이용한 서블릿 맵핑
5강. Servlet 본격적으로 살펴보기-I 프로젝트 만들기 doGet() doPost()
최윤정 Java 프로그래밍 클래스 상속 최윤정
31강 JAVA 네트워크 JAVA 네트워크 InetAdress, URLConnection 클래스 Socket의 이해
9강. AOP(Aspect Oriented Programming)-I
25강. Security-I 보안 관련 프로젝트 생성 보안 관련 라이브러리 추가 보안 관련 설정 파일 만들기
6강. DI설정 방법 XML파일을 이용한 DI설정 방법 JAVA를 이용한 DI설정 방법 XML과 JAVA를 같이 사용
5강. DI활용 의존 관계 DI사용에 따른 장점 Lecturer Kim Myoung-Ho Nickname 블스
자바 5.0 프로그래밍.
29강. MVC패턴을 이용한 게시판 만들기-III
18강. 데이터 베이스 - II JDBC 살펴보기 Statement객체 살펴보기 Lecturer Kim Myoung-Ho
22강. 파일 업로드 - 파일 업로드 라이브러리 설치 - 파일 업로드 프로그래밍 Lecturer Kim Myoung-Ho
12강. 액션태그 액션태그란? forward, include, param 태그 살펴보기
17강. 데이터 베이스 - I 데이터 베이스의 개요 Oracle 설치 기본적인 SQL문 익히기
25강 예외처리 - 예외란? - 예외처리의 필요성 - 예외처리 문법 (try ~ catch) - 예외처리 문법 (throws)
3강_HTML 기본-II 리스트 태그 - ul,li,ol 표를 나타내는 태그 - table 이미지를 출력하는 태그 – img
26강. 포워딩(Forwarding) RequestDispatcher 클래스 HttpServletResponse 클래스
19강. 데이터 베이스 - III 회원가입 및 회원정보 수정 프로그래밍 Lecturer Kim Myoung-Ho
하나님의 말씀 너희가 악할지라도 좋은 것을 자식에게 줄 줄 알거든 하물며 너희 하늘 아버지께서 구하는 자에게
28강_맵(Map) 맵을 이용하기 위한 설정 위치 추적 Lecturer Kim Myoung-Ho Nickname 블스
25강. FrontController 패턴과 Command 패턴
26강_CSS3 규칙 CSS파일 규칙 Lecturer Kim Myoung-Ho
4강. 컴퓨터와의 기본적인 소통수단 - II 제어문과 루프문이란? if문, switch문, for문, while문 의 이해
24강 API - III - Timer 클래스 - StringTokenizer 클래스 Lecturer Kim Myoung-Ho
15강. 예외 페이지 예외 페이지의 필요성 page 지시자를 이용한 예외 처리 web.xml파일을 이용한 예외 처리
10강. JSP 본격적으로 살펴보기-II 스크립트릿, 선언, 표현식 지시자 주석 Lecturer Kim Myoung-Ho
10강_CSS 속성-I CSS3 단위 url() display 속성 visibility 속성 opacity 속성
Method & library.
15강. 추상클래스 - II - 어린이집 아이들의 식대 계산 프로그래밍 Lecturer Kim Myoung-Ho
16강. 스프링MVC 게시판-I 프로젝트 설계 DataBase 구축 프로젝트 생성 Lecturer Kim Myoung-Ho
7가지 방법 PowerPoint에서 공동 작업하는 다른 사용자와 함께 편집 작업 중인 사용자 보기
자녀들아 모든 일에 부모에게 순종하라 이는 주 안에서 기쁘게 하는 것이니라 골로새서 3장 20절 말씀 -아멘-
30강 JAVA 그래픽 JAVA GUI(Graphic User Interface)란? AWT 컴포넌트? Swing 컴포넌트?
29강 JAVA 스레드 - 스레드란? - 멀티스레드 문법 - synchronized Lecturer Kim Myoung-Ho
악은 어떤 모양이라도 버리라 데살로니가전서 5장 22절 말씀 -아멘-.
7강_CSS 기본-II id(#) 와 class(.) tag,id, class 혼합 속성 선택자 후손 및 자손 선택자
11강_CSS 속성-II margin 및 padding 속성 box-sizing 속성 border 속성
27강 JAVA Collections - II - Map계열 컬렉션 클래스 살펴보기 - Set계열 컬렉션 클래스 살펴보기
예수께서 이르시되 오히려 하나님의 말씀을 듣고 지키는 자가 복이 있느니라 하시니라 누가복음 11장 28절 말씀 -아멘-
6강. 객체지향 프로그램의 시작 객체지향 이전의 프로그래밍 객체지향의 등장 배경과 이해 메소드의 이해
20장. 객체지향 프로그래밍 01_ 객체지향 프로그래밍의 시작.
2강_첫번째 안드로이드 프로젝트 에뮬레이터(AVD) 만들기 처음 만들어 보는 프로젝트 전체적인 구성 살펴보기
Power Java 제11장 상속.
5강. 배열 배열이란? 배열의 문법 변수와 같이 이해하는 배열의 메모리 구조의 이해 레퍼런스의 이해 다차원 배열
3강. 컴퓨터와의 기본적인 소통수단 - I 연산자란? 컴퓨터와 소통하기 위한 다양한 방법들
7강. 객체지향 프로그램의 본질 메소드 프로그래밍의 한계 객체의 개념 및 클래스의 이해
26강 JAVA Collections - I - 컬렉션이란? - JAVA도 결국 효과적인 데이터를 처리하기 위한 수단
20강 패턴을 통한 객체지향 언어의 이해 - II - 난이도 있는 패턴 예제 - I Lecturer Kim Myoung-Ho
9강. 클래스 실전 학사 관리 프로그램 만들기 프로그래밍이란 결국 데이터를 효율적으로 관리하기 위한 공구
15강. 폼 데이터 값 검증 Validator를 이용한 검증 ValidationUtils 클래스
13강. Form 데이터 HttpServletRequest 어노테이션 데이터(커맨드) 객체
14강. 세션 세션이란? 세션 문법 Lecturer Kim Myoung-Ho Nickname 블스
18강. 인터페이스 – II - 인터페이스와 다중상속 - 인터페이스를 통한 로봇 장남감 만들기 프로그래밍
디버깅 관련 옵션 실습해보기 발표 : 2008년 5월 19일 2분반 정 훈 승
22강. 트랜잭션(Transaction)-I
C# 07장. 객체 지향 개념.
12강. 컨트롤러 컨트롤러 클래스 제작 요청 처리 메소드 제작 뷰에 데이터 전달
안녕하세요!.
그러므로 형제들아 내가 하나님의 모든 자비하심으로 너희를 권하노니 너희 몸을 하나님이 기뻐하시는 거룩한 산 제물로 드리라
하나님의 말씀 이스라엘이여 여호와의 구원을 너는 행복한 사람이로다 그는 너를 돕는 방패시요 너 같이 얻은 백성이 누구냐
12강. 상속 - I - 상속! 어렵지 않아요. 일상에서 알고 있는 상속 입니다. - 상속이 필요한 이유 - 상속 문법의 이해
영접하는 자 곧 그 이름을 믿는 자들에게는 하나님의 자녀가 되는 권세를 주셨으니 요한복음 1장 12절 말씀 -아멘-
15강_액티비티 액티비티란? 새로운 액티비티로 전환 생명주기 화면방향(Orientation)
11강. static - static의 이해 - static과 객체와의 관계 - static의 장점과 단점
Presentation transcript:

14강. 추상클래스 - I - 추상클래스의 이해 - 추상클래스가 필요한 이유 - 추상클래스의 문법 - 추상클래스 상속과 일반적인 상속의 차이 Lecturer Kim Myoung-Ho Nickname 블스 blogstudy@naver.com

14-1. 추상클래스의 이해 추상적으로 정의할 테니, 사용자가 꼭 재정의(overriding) 하세요.(14_1_ex1_abstract) 한가지 간단한 상속을 통한 예제를 살펴보도록 하겠습니다. 시나리오는 지난 시간에 살펴본 음식점 체인 사업관련 예제 입니다. 우선 본사에서 메뉴에 대한 가격 메소드를 정해 주고, 매장에서는 주변 환경에 맞게 가격을 책정(overriding) 합니다. 단. 지난번과 달이 본사에서는 메뉴만 정해 주고, 가격을 매장에 전부 위임 합니다. 주택가에 매장1호점 김치찌개 – 4,500원 부대찌게 – 5,000원 비빔밥 – 6,000원 순대국 – 판매하지 않음 공기밥 – 1,000원 본사 김치찌개 – 0원 부대찌게 – 0원 비빔밥 – 0원 순대국 – 0원 공기밥 – 0원 대학가에 매장2호점 김치찌개 – 5,000원 부대찌게 – 5,000원 비빔밥 – 5,000원 순대국 – 4,000원 공기밥 – 무료 증권가에 매장3호점 김치찌개 – 6,000원 부대찌게 – 7,000원 비빔밥 – 7,000원 순대국 – 6,000원 공기밥 – 1,000원

14-1. 추상클래스의 이해 추상적으로 정의할 테니, 사용자가 꼭 재정의(overriding) 하세요. 살펴본 예제와 같이 본사에서 가격을 정하지 않았고, 매장에서 가격을 정(재정의)하지 않았더니, 문제가 발생 했습니다. 비빔밥의 가격이 0원으로 공짜 비빔밥이 되었습니다. 왜 이런 결과가 나온 걸까요? 매장에서는 본사만 믿고 가격을 재정의 하지 않았기 때문입니다. 그럼 이런 문제를 사전에 예방하려면 어떻게 해야 될까요? 답은 간단 합니다. 매장이 오픈 예정일 때, 본사에서는 ‘모든 메뉴의 가격을 정하세요.’ 라고 매장 점주님께 말해 주면 됩니다. 즉 가격 측정을 강요 하는 행위 입니다. JAVA프로그램에서도 강제로 부모클래스에서 자식클래스에게 메소드를 강제로 재정의(override)하게 할 수 있습니다. 그리고 이러한 방법으로 만들어진 클래스를 ‘추상클래스’라고 합니다. 예제를 통해 살펴보도록 하겠습니다.

14-2. 추상클래스가 필요한 이유 강제성을 느낄 때 사용 합니다. 객체지향 언어를 하다 보면 추상화 또는 추상개념 등의 ‘추상’이라는 말을 많이 접하게 될 것 입니다. 프로그래밍에서 ‘추상'이라는 것은 일반생활에서의 ‘추상’과 동일 합니다. 어떤 행위(메소드)를 추상적으로 정의만 해놓고, 실제로 필요한 곳에서 필요에 따라서 재정의 하는 방식 입니다. 여러분들이 상속을 사용하다가, 자식클래스들에서 강제로 무엇인가 꼭 재정의 해서 사용해야 될 경우가 발생되면, 추상 개념을 먼저 생각 하시기 바랍니다. 추상 개념은 객체지향 언어에서는 아주 중요한 의미가 있습니다. 그리고 추상적으로 프로그래밍을 한다는 것은 결코 쉬운 일은 아닐 것 입니다. 하지만, 예제를 많이 접해보고, 추후에 알아볼 패턴에 대해서 공부를 하고 나면, 추상적으로 프로그래밍 한다는 것이 얼마나 중요한 건지 쉽게 아실 수 있을 것 입니다.

14-3. 추상클래스의 문법 추상 클래스에서는 정의만 합니다. 구현하지 않습니다.(14_3_ex1_abstract)

14-4. 추상클래스 상속과 일반적인 상속의 차이 차이는 있지만, 어느 쪽이 더 좋다는 정답은 없습니다. 현장에 있는 개발자들도 항상 고민하는 부분 중 하나가 추상 클래스로 할 것인지 일반 클래스로 할 것인지 고민을 하게 됩니다. 결론부터 말씀 드리면, 정답은 없습니다. 그리고 처음부터 100% 확정하지도 않습니다. 초기 설계 단계에서 어느 정도 추상과 일반 클래스를 분리 하기는 하지만, 프로젝트 개발 도중 언제든지 변경하기도 합니다.(리펙토링) 눈치채신 분도 있을 거 같은데요, 부모 클래스의 메소드를 자식 클래스에서 변경할 일이 없다면, 일반 클래스를 이용한 상속이 좋습니다. 하지만, 이전 예제처럼 자식클래스에서 꼭 재정의 해야 하는 부분이 있다면, 추상클래스를 이용하여 강제로 재정의 하게 해야 됩니다. 추후에 패턴을 살펴 볼 때 일반클래스와 추상클래스를 이용한 상속의 차이를 확실하게 느끼실 수 있습니다.