Lecture 04 객체지향 페러다임 Kwang-Man Ko

Slides:



Advertisements
Similar presentations
3. 메소드와 변수 SCJP 자격증 프로젝트 발표자 : 최선웅. 1. 메 소 드 개 념 2. 메 소 드 양 식 3. 메 소 드 변 수 4. 메 소 드 예 제 5. 참 고 문 헌 / 자 료 목 차.
Advertisements

ㅎㅎ 구조체 구조체 사용하기 함수 매개변수로서의 구조체 구조체 포인터와 레퍼런스 구조체 배열.
ㅎㅎ 구조체 C++ 프로그래밍 기초 : 객체지향의 시작 구조체 사용하기 함수 매개변수로서의 구조체 구조체 포인터와 레퍼런스
클래스 class, 객체 object 생성자 constructor 접근 access 제어 이벤트 event 처리.
Chap07 상속 Section 1 : 상속의 개요 Section 2 : 멤버 변수의 상속
최윤정 Java 프로그래밍 클래스 상속 최윤정
5장. 객체지향과 클래스.
JAVA 클래스와 멤버 2014년 4월 2일 19:00 손은경 강원대학교 데이터베이스 연구실 강원대학교 데이터베이스 연구실.
9장. C 언어의 핵심! 함수. 9장. C 언어의 핵심! 함수 9-1 함수의 정의와 선언 main 함수 다시 보기 : 함수의 기본 형태 { } 그림 9-1.
Java로 배우는 디자인패턴 입문 Chapter 5. Singleton 단 하나의 인스턴스
제 9 장 구조체와 공용체.
컴퓨터 프로그래밍 기초 [Final] 기말고사
윤성우의 열혈 C 프로그래밍 윤성우 저 열혈강의 C 프로그래밍 개정판 Chapter 12. 포인터의 이해.
제 6장. 생성자와 소멸자 학기 프로그래밍언어및실습 (C++).
8.1 인터페이스 개요와 인터페이스 정의 8.2 인터페이스의 사용 8.3 인터페이스의 상속 8.4 인터페이스 참조
10장 함수.
5장. 참조 타입.
11장. 포인터 01_ 포인터의 기본 02_ 포인터와 Const.
6장. 클래스.
SqlParameter 클래스 선문 비트 18기 발표자 : 박성한.
자바 5.0 프로그래밍.
제7장 클래스와 객체.
23장. 구조체와 사용자 정의 자료형 2.
Java 6장. 클래스 : 속성 public class SumTest {
Lesson 7. 클래스와 메소드 - 1.
10장. 예외처리.
자바 5.0 프로그래밍.
Choi, Namseok Java 기초 (객체와 클래스) Choi, Namseok
C#.
6장 클래스 6.1 클래스의 일반 구조 6.2 클래스 선언 6.3 객체의 생성 6.4 멤버 변수 6.5 멤버변수 접근 한정자
[INA470] Java Programming Youn-Hee Han
13. 연산자 오버로딩.
7장 인터페이스와 추상 클래스.
Method & library.
사용자 함수 사용하기 함수 함수 정의 프로그램에서 특정한 기능을 수행하도록 만든 하나의 단위 작업
Chap 6.Assembler 유건우.
13. 포인터와 배열! 함께 이해하기 IT응용시스템공학과 김 형 진 교수.
Chapter 11 객체지향 프로그래밍의 기초 01 클래스 02 생성자 03 인스턴스 변수와 클래스 변수 예제 모음 요약
27장. 모듈화 프로그래밍.
Java의 정석 제 5 장 배 열 Java 정석 남궁성 강의 의
3장. 변수와 연산자 교안 : 전자정보통신 홈페이지 / 커뮤니티/ 학술세미나
Chapter6 : JVM과 메모리 6.1 JVM의 구조와 메모리 모델 6.2 프로그램 실행과 메모리 6.3 객체생성과 메모리
Effective Java [Issue 1 and 2]
컴퓨터 프로그래밍 기초 - 10th : 포인터 및 구조체 -
2장. 변수와 타입.
20장. 객체지향 프로그래밍 01_ 객체지향 프로그래밍의 시작.
제 4장. 객체 지향 프로그래밍 시작하기 학기 프로그래밍언어및실습 (C++).
자바 가상 머신 프로그래밍 Chap 10. 자바 컴파일링의 안쪽 ② Pslab 오민경.
Power Java 제11장 상속.
JA A V W. 06.
10장 상속 Section 1 상속의 개요 Section 2 상속과 한정자 Section 3 상속과 생성자
클래스 : 기능 CHAPTER 7 Section 1 생성자(Constructor)
Lecture 02 프로그램 구조 및 문법 Kwang-Man Ko
.Net Web Application 2007 컴퓨터공학실험(Ⅰ)
중복 멤버의 처리 조 병 규 한 국 교 통 대 학 교 SQ Lab..
제 8장. 클래스의 활용 학기 프로그래밍언어및실습 (C++).
3. 모듈 (5장. 모듈).
발표자 : 이지연 Programming Systems Lab.
Numerical Analysis Programming using NRs
Chapter 11 구조체.
Static과 const 선언 조 병 규 한 국 교 통 대 학 교 SQ Lab..
.Net FrameWork for Web2.0 한석수
2.가상머신의 탐험 도구, Oolong에 대하여 ps lab 김윤경.
윤성우의 열혈 C++ 프로그래밍 윤성우 저 열혈강의 C++ 프로그래밍 개정판 Chapter 05. 복사 생성자.
Java의 정석 제 8 장 예외처리 (Exception handling) Java 정석 남궁성 강의
상속 (Inheritance) private 전용부분 전용부분 공용부분 공용부분 public 기본 클래스
13. 포인터와 배열! 함께 이해하기.
7 생성자 함수.
6 객체.
20 XMLHttpRequest.
Presentation transcript:

Lecture 04 객체지향 페러다임 Kwang-Man Ko kkmam@sangji.ac.kr, compiler.sangji.ac.kr Department of Computer Engineering Sang Ji University 2018

객체 지향 페러다임 개요 객체(object)의 개념 객체는 현실 세계의 객체를 필드와 메서드로 모델링한 것 객체는 상태를 필드로 정의하고, 동작을 메서드로 정의. 필드는 객체 내부에 선언된 변수를 의미하고, 메서드는 객체 내부에 정 의된 동작

객체 지향의 개요 절차 지향 프로그래밍 일련의 동작을 순서에 맞추어 단계적으로 실행하도록 명령어를 나열 데이터를 정의하는 방법보다는 명령어의 순서와 흐름에 중점 수행할 작업을 예상할 수 있어 직관적인데, 규모가 작을 때는 프로그래 밍과 이해하기가 용이 소프트웨어는 계산 위주이므로 절차 지향 프로그래밍이 적합

객체 지향 프로그래밍 소프트웨어의 규모가 커지면서 동작과 분리되어 전 과정에서 서로 복잡 하게 얽혀 있는 데이터를 사용했기 때문에 절차 지향 프로그래밍 방식 의 한계 절차 지향 프로그램은 추후 변경하거나 확장하기도 어려움 현실 세계를 객체 단위로 프로그래밍하며, 객체는 필드(데이터)와 메서 드(코드)를 하나로 묶어 표현

객체 지향의 개요 객체와 클래스

객체 지향 프로그래밍 ( OOP ) 캡슐화 Encapsulation (정보 은닉 Information hiding) 관련된 필드와 메서드를 하나의 캡슐처럼 포장해 세부 내용을 외부에서 알 수 없도록 감추는 것

객체 지향 프로그래밍 상속 (inheritance) 상위 객체를 상속받은 하위 객체가 상위 객체의 메서드와 필드를 사용 하는 것 상속은 개발된 객체를 재사용(reusability)하는 방법 중 하나

객체 지향 프로그래밍 다형성 (polymorphism) 대입되는 객체에 따라서 메서드를 다르게 동작하도록 구현하는 기술. 실행 도중 동일한 이름의 다양한 구현체 중에서 메서드를 선택 가능

클래스 선언과 객체 생성 추상화 (abstraction) 추상화는 현실 세계의 객체에서 불필요한 속성을 제거하고 중요한 정보 만 클래스로 표현하는 일종의 모델링 기법 사람마다 추상화하는 기법이 같지 않으므로 각 개발자는 클래스를 다르 게 정의 가능

클래스 선언과 객체 생성 클래스 선언 형식 예

클래스 선언과 객체 생성 클래스 선언과 파일 보통 소스 파일마다 하나의 클래스를 선언하지만, 2개 이상의 클래스를 하나의 파일로 선언 가능 하나의 파일에 클래스가 둘 이상 있다면 하나만 public으로 선언할 수 있 고, 해당 클래스 이름은 소스 파일 이름과 동일해야 함

클래스 선언과 객체 생성 객체 생성과 참조 변수 한 문장으로 변수 선언과 객체 생성

클래스 선언과 객체 생성 기초 타입과 참조 타입 new Ball();

클래스 선언과 객체 생성 기초 타입과 참조 타입 예제 : sec03/PhoneDemo.java

클래스의 구성 요소와 멤버 접근 클래스의 구성 요소 멤버 : 필드, 메서드 생성자 참고 : 지역 변수는 메서드 내부에 선언된 변수. 매개 변수도 일종의 지 역 변수임

클래스의 구성 요소와 멤버 접근 필드와 지역 변수의 차이 필드는 기본 값이 있지만, 지역 변수는 기본 값이 없어 반드시 초기화 필드는 기본 값이 있지만, 지역 변수는 기본 값이 없어 반드시 초기화 필드는 클래스 전체에서 사용할 수 있지 만, 지역 변수는 선언된 블록 내부의 선 언된 후에서만 사용 가능 필드와 달리 지역 변수는 final로만 지정 가능 예제 : sec04/LocalVariableDemo.java

클래스의 구성 요소와 멤버 접근 클래스 내부에서 멤버 접근 예제 : sec04/etc/CircleDemo.java this.필드 this.메서드 필드 메서드 혹은

클래스의 구성 요소와 멤버 접근 클래스 외부에서 멤버 접근 예제 : sec04/CircleDemo.java 인스턴스 변수 인스턴스 메서드

접근자와 설정자 필요성 접근자와 설정자 클래스 내부에 캡슐화된 멤버를 외부에서 사용할 필요 private으로 지정된 필드에 값을 반환하는 접근자와 값을 변경하는 설정 자는 공개된 메서드 일반적으로 접근자는 get, 설정자는 set으로 시작하는 이름을 사용 필드 이름을 외부와 차단해서 독립시키기 때문에 필드 이름 변경이나 데이터 검증도 가능 예제 : sec05/CircleDemo.java

생성자 (constructor) 생성자의 의미와 선언 생성자의 역할 : 객체를 생성하는 시점에서 필드를 다양하게 초기화 생성자의 선언 방식. 생성자 이름은 클래스 이름과 동일 생성자의 반환 타입은 없음 생성자는 new 연산자와 함께 사용하며, 객체를 생성할 때 호출 생성자도 오버로딩 가능.

생성자 생성자 사용 기본 생성자 모든 클래스는 최소한 하나의 생성자가 있음 만약 생성자를 선언하지 않으면 컴파일러가 자동으로 기본 생성자 (Default Constructor)를 추가 기본 생성자는 매개변수도 없고 본체에서 실행할 내용도 없는 생성자 예제 : sec06/etc/CircleDemo.java

생성자 생성자 오버로딩 생성자도 메서드처럼 오버로딩(Overloading) 가능 예제 : sec06/CircleDemo.java

생성자 this와 this()

생성자 this와 this() 예제 : sec06/dis/Circle.java 주의 사항

생성자 연속 호출 반환 타입이 void인 setName(String name), setAge(), sayHello()라는 메서 드를 가진 Person 클래스가 있다고 가정 메서드를 호출할 때마다 새로운 실행문을 사용해야 하므로 번거롭고 가독성도 떨어진다.

생성자 연속 호출 만약 setName()과 setAge()의 반환 타입이 this라면 예제 : sec06/MethodChainDemo.java

정적 멤버 (static member) 인스턴스 멤버와 정적 멤버

정적 멤버 인스턴스 멤버와 정적 멤버 인스턴스 변수는 객체별로 관리 객체를 생성할 때 인스턴스 변수도 객체가 소멸될 때는 자동으로 소멸 정적 변수는 클래스 로더가 클래스를 메서드 영역에 적재할 때 생성 정적 메서드의 유의 사항 객체와 관련된 인스턴스 변수를 사용할 수 없다. 객체와 관련된 인스턴스 메서드를 호출할 수 없다. 객체 자신을 가리키는 this 키워드를 사용할 수 없다.

정적 멤버 정적 멤버의 활용 상수는 변경되지 않는 변수이기 때문에 final 키워드로 지정 상수는 값이 변경되지 않으므로 객체마다 따로 기억 공간을 할당할 필 요가 없다. 따라서 static final로 지정해서 선언

예제 : sec07/CircleDemo.java 예제 : sec07/UtilDemo.java

정적 멤버 정적 블록 정적 변수의 초기화가 복잡할 때는 다음과 같이 정적 블록을 사용. 예제 : sec07/OneToTenDemo.java