광운 객체지향프로그래밍 부성순 강의목표 강의세부내용

Slides:



Advertisements
Similar presentations
StarUML UOS, SELab. Jinhan Kim.. University of Seoul, Software Engineering Laboratory 1. StarUML 특징  StarUML™ 은 UML(Unified Modeling Language)
Advertisements

멘토링 2 주차 장 프로그래밍을 위한 자바의 자료형  값이 변하지 않는 상수  메모리 기억공간인 변수.
YES C 제 1 장 C 언어의 개요 1/34 제 1 장 C 언어의 개요 문봉근. YES C 제 1 장 C 언어의 개요 2/34 제 1 장 C 언어의 개요 1.1 프로그램과 C 언어의 특징 1.2 C 언어의 프로그램 구성 1.3 비주얼 C++ 통합 환경 들어가기.
학습목표 UML 소개 2010 학년도 2 학기. 학습목표 2 이번 시간의 학습목표 이번 시간을 정상적으로 이수하면 우리들은 … UML(Unified Modeling Language) 의 개념을 설명할 수 있다. UML 의 구성요소를 설명할 수 있다.
전남행복수업 design 독서ㆍ토론 수업 지원 자료 활용 목포유달초등학교 김미향.
전남행복수업 design, 독서·토론수업 연구의 개요를 말씀드리겠습니다..
I N V I T A T I O N 통합건강증진사업의 성공전략 2012 한국보건간호학회 추계학술대회 및 총회 ■ 찾아오시는 길
컴퓨터 응용 및 실습 Part1. OOP&Java Programming data type Review
어서와 Java는 처음이지! 제2장 자바 프로그래밍 기초.
Java로 배우는 디자인패턴 입문 Chapter 0. UML 과 Design Pattern
4부 클래스 라이브러리 “4부에서는 자바 언어의 API인 클래스 라이브러리에 관해 설명합니다
예제로 배우는 Visual Basic 계산기로 익히는 연산자
C++ Exspresso 제5장 클래스의 기초.
2주 실습강의 Java의 기본문법(1) 인공지능연구실.
Chapter 02 자바 기본구조 자바 프로그래밍의 기초적인 문법을 소개
2강. JAVA 프로그래밍이란?-II & 변수 JAVA 프로그램 환경설정과 실행 방법 변수란?
객체 지향 원리 송치형.
소프트웨어공학 UML 학기.
10장 객체-지향 프로그래밍 II ©창병모.
IOC, DI 2015 Web Service Computing.
JAVA 프로그래밍 6장 객체지향프로그래밍의 핵심.
자바 5.0 프로그래밍.
Choi, Namseok Java 기초 (Java의 제어문과 배열) Choi, Namseok
프로그램 개발과 언어 Chapter 05 컴퓨터의 이해
제 2 장 기본 문법 (1-2) 주제 : 객체, 변수, 모듈, 상수.
Java Programming Language (4)
화면(UI) 기반 도메인모델 작성 2014년 8월.
명품 Java Programming.
소프트웨어설계 UML 학기.
2장 자바환경과 자바 프로그램 2.1 자바 개발 환경 2.2 자바 통합환경 2.3 자바 응용 프로그램과 애플릿 프로그램
윤 홍 란 4 장 클래스 작성 윤 홍 란
2010학년도 2학기 객체지향의 이해.
DataScience Lab. 박사과정 김희찬 (월)
김 정 석 Web Programming 김 정 석
C++ 개요 객체지향 윈도우즈 프로그래밍 한국성서대학교 유일선
주소록 프로그램.
Network Programming(1)
Chapter6 : JVM과 메모리 6.1 JVM의 구조와 메모리 모델 6.2 프로그램 실행과 메모리 6.3 객체생성과 메모리
DataScience Lab. 박사과정 김희찬 (월)
자바의 신 Volume 1 1부(1~3장) 자바의 신 메인 홈 : 자바의 신 페이스북: 자바의 신 문제 풀이 :
03. 안드로이드를 위한 Java 문법 제목. 03. 안드로이드를 위한 Java 문법 제목.
Ch.1 Iterator Pattern <<interface>> Aggregate +iterator
활동 다이어그램(Activity Diagram)
제 2장 어휘구조와 자료형 토 큰 리 터 럴 주 석 자 료 형 배 열 형.
Java의 정석 제 2 장 변수(Variable) Java 정석 남궁성 강의
4장 - PHP의 표현식과 흐름 제어-.
객체지향의 한계를 넘어, AOP 전은영,이재훈 고덕윤.
Java Chapter 4 ~ 주차.
컴퓨터공학실습(I) 3주 인공지능연구실.
Java IT응용시스템공학과 김형진 교수 5장. 객체지향 개념 public class SumTest {
Chapter3 : 객체지향의 개념 3.1 객체지향(object-oriented)과
Chap02 객체 지향 개념 2.1 객체지향(object-oriented)과 절차지향(procedural-oriented)
프로그래머를 위한 첫걸음 JDBC Lecture 001 BY MINIO
Spring DI 이해 및 활용.
Chapter 02. 소프트웨어와 자료구조.
Java 3장. 자바의 기본 구조 I : 변수, 자료형, 연산자 public class SumTest {
자동 매크로 만들기 매크로 실행하기 매크로 편집하고 응용하기
UML과 객체지향 모델링 UML의 개요 객체지향 모델링.
JVM의 구조와 메모리 모델 JVM의 내부 구조 클래스 파일 클래스 로더 메소드(method) 영역 힙(heap) 영역
자바 5.0 프로그래밍.
2015년 2학년 1반.
C언어 개요 프로그래밍이란 프로그래밍 언어란 컴퓨터와의 의사소통을 위한 표현 방법 세대별 언어의 발전을 거듭함
성공적인 입사지원서 작성법 제이비커리어 교육수석 소 은 선.
온라인 플랫폼 의료관광상품 기획안 기획안과 별도로, 제출되는 상품 등록 정보는 이미지 형태로 제출바랍니다.
자료구조 강의소개 정성훈 연락처 : 이메일 : 연구실 : 연219호 연락처 : 이메일 : 홈페이지: 정성훈.
실습과제 1번 /* 1. 멤버 변수로 반경 radius를 갖고, 그 값을 모니터에 출력하는
제 1장 프로그래밍 언어 소개 1.1 프로그래밍 언어란 무엇인가 1.2 프로그래밍 언어를 배워야 하는 이유
C++ 언어의 특징
Choi Younghwan CSE HUFS
1. 객체-지향 프로그래밍.
Presentation transcript:

광운 객체지향프로그래밍 2017. 10. 21 부성순 Bakpak@empa.com 강의목표 강의세부내용 객체지향 언어에 대한 정리 C#을 이용한 객체지향 언어 시작 강의세부내용 Ctrl+Shift+왼쪽클릭 http://blog.naver.com/PostView.nhn?blogId=mrbinggrae&logNo=220502097941&parentCategoryNo=&categoryNo=48&viewDate=&isShowPopularPosts=true&from=search http://kurosai.tistory.com/entry/Unity3D-1인칭-컨트롤러 캡슐화의 정의 및 사용법 객체지향 설계기법 (SOLID) UML의 정의

파이썬 기본문법이해 객체지향 이해 https://opentutorials.org/course/741/4587 http://pythonstudy.xyz/python/article/19-%ED%81%B4%EB%9E%98%EC%8A%A4 http://schoolofweb.net/blog/posts/%ED%8C%8C%EC%9D%B4%EC%8D%AC-oop-part-1-%EA%B0%9D%EC%B2%B4-%EC%A7%80%ED%96%A5-%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%B0%8Doop%EC%9D%80-%EB%AC%B4%EC%97%87%EC%9D%B8%EA%B0%80-%EC%99%9C-%EC%82%AC%EC%9A%A9%ED%95%98%EB%8A%94%EA%B0%80/ Ctrl+Shift+왼쪽클릭 http://blog.naver.com/PostView.nhn?blogId=mrbinggrae&logNo=220502097941&parentCategoryNo=&categoryNo=48&viewDate=&isShowPopularPosts=true&from=search http://kurosai.tistory.com/entry/Unity3D-1인칭-컨트롤러

= + + Software Program Data Document 소프트웨어 위기론(공급과 수요의 불일치) * Document에서 중요도:  메뉴얼<소스코드<설계도(UML)     소프트웨어 위기론 극복방안 - 결정적인 발전 없이 느리고 점진적인 변화 - 개발 기술의 낙후 및 부족한 전문 인력 - 개발 예산과 일정을 설정하기 어려움 - 사용자의 요구에 못 미침 - 품질개선이 안됨 - 유지보수가 어려움 - 스파게티 코드를 자제함 - 모듈화 프로그램 - 구조적 프로그래밍 - 4세대 언어(비 절차적 언어) - (재사용성 향상)소프트웨어 공학 - (재사용성 향상)객체지향 기술 - (재사용성 향상)컴포넌트 기반 기술 설계의 품질 - Quality of Design 잘 설계한 시스템은 이해하기 쉽고, 바꾸기 쉽고, 재사용하기 쉽습니다. 개발하는데 특별히 어렵지도 않고, 단순하고 간결하며 경제적입니다. 출처: http://vandbt.tistory.com/11 [소프트웨어 디자인- Design Software by vandbt] http://vandbt.tistory.com/11

(Procedural Oriented: 프로시져 지향) 소프트웨어 가치 사용자가 요구하는 기능을 올바르게 제공 즉. 요구사항에 유연하게 적용가능한 소프트웨어 개발 절차지향 단점 (Procedural Oriented: 프로시져 지향) 추상화된 객체지향 사용 데이터 타입이나 의미를 변경해야 할때, 함께 수정해야 하는 프로시저가 증가한다. 같은 데이터를 프로시저들이 서로 다른 의미로 사용하는 경우가 발생한다.

데이테르의 법칙(Law of Demeter) –모듈간 결합도 최소화 캡슐화 객체가 내부적으로 기능을 어떻게 구현하는지 감춤 이를 통해 내부의 기능 구현이 변경되더라도 그 기능을 사용하는 코드는 영향을 받지 않도록 만들어준다. 즉, 내부 구현 변경의 유연함을 주는 기법이다. Tell, Don’t Ask - 데이터를 물어보지 않고, 기능을 실행해 달라고 말하는 규칙 데이테르의 법칙(Law of Demeter) –모듈간 결합도 최소화 - 메서드에서 생성한 객체의 메서드만 호출 - 파라미터로 받은 객체의 메서드만 호출 - 필드로 참조하는 객체의 메서드만 호출

캡슐화-Tell, Don’t Ask 예 회원의 서비스 만료 날짜 여부에 따라 서비스를 제공하거나 안내 페이지를 보여줘야 할때, 서비스 만료 날짜 여부를 확인하는 코드는 여러곳에서 사용될 것이다. 회원 정보를 담고 있는 클래스는 아래와 같이 만료 날짜 데이터를 담고 있을 것이다. public class Member { // pass private Date expiryDate; private boolean male; public Date getExpiryDate() { return expiryDate; } public boolen isMale() { return male; Member 객체 정의 private 날짜 형식의 만료일변수 private 블린 형식의 남자변수; public 만료일여부 { public 남자여부 { expiration date (만료일( if (member.getExpiryDate()!=null && member.getExpiryDate().getDate() < System.currentTimeMillis()) { // 만료되었을때 처리코드 } 만료처리 코드예

캡슐화-Tell, Don’t Ask 예 만약 여성회원인 경우 만료 기간이 지났어도 30일 간은 서비스를 운영할수 있도록 정책이 변경되었다면 if (member.getExpiryDate()!=null && member.getExpiryDate().getDate() < System.currentTimeMillis()) { // 만료되었을때 처리코드 } 모든 코드 찾아서 변경해야함 long day30=1000*60*60*24*30; //30일 초단위로 계산 if ( ( member.isMale() && member.getExpiryDate()!=null && member.getExpiryDate().getDate() < System.currentTimeMillis()) ) || ( !member.isMale() && member.getExpiryDate()!=null && member.getExpiryDate().getDate() < System.currentTimeMillis()) – day30 )) { //만료되었을때 처리 } expiration date (만료일(

캡슐화-Tell, Don’t Ask 예 만료시 true 반환 if (member.isExpired()) { public class Member { // pass private Date expiryDate; private boolean male; public Date getExpiryDate() { return expiryDate; } public boolen isMale() { return male; public Date isExpired(){ return expiryDate != null && expiryDate.getDate()< System.currentTimeMillis()); 만료시 true 반환 if (member.isExpired()) { //만료에 따른 처리 } expiration date (만료일(

캡슐화-데미테르법칙 - 메서드에서 생성한 객체의 메서드만 호출 - 파라미터로 받은 객체의 메서드만 호출 - 필드로 참조하는 객체의 메서드만 호출 public class Member { // pass private Date expiryDate; private boolean male; public Date getExpiryDate() { return expiryDate; } public boolen isMale() { return male; public void processSome(Member member) { if (member.getDate().getTime().. } 파라미터로 받은 객체의 메서드만 호출해야함. member의 getData()뒤에 다시 getTime 안됨  member.somMethod() 로 변경해야함. http://blog.aliencube.org/ko/2013/12/06/law-of-demeter-explained/

SOLiD 객체지향 기본이 되는 설계원칙 : SOLID 단일책임원칙(Simgle responsibility principle; SRP) 개방-폐쇄 원칙(Open-closed principle; OCP) 리스코프 치환 원칙(Liskov substitution principle; LSP) 인터페이스 분리 원칙(interface segregation principle; iSP) 의존 역전 원칙(Dependency inversion principle; DIP)

객체지향 기본이 되는 설계원칙 : SOLiD 단일 책임원칙(Simgle responsibility principle; SRP) 클래스는 단 한개의 책임을 가져야 한다. (즉 클래스를 변경하는 이유는 단 한개여야 한다 public class DataViever { public void display() { String data=loadHtml(); updateGui(data); } public String loadHtml() { HttpClient client=new HttpClient(); client.connect(url); return client.getResponse(); private void updateGui(String data){ GuiData guiModel=parseDataToGuiData(data) tableUi.changeData(guiModel); private GuiData parseDataToGuiData(String data) { //파싱처리 String를 byte로 변경하면 읽어온 데이터 구조변화 updateGui()파라미터 타입 변화 GuiData 생성하는 코드 변화

객체지향 기본이 되는 설계원칙 : SOLiD 단일 책임원칙(Simgle responsibility principle; SRP) 클래스는 단 한개의 책임을 가져야 한다. (즉 클래스를 변경하는 이유는 단 한개여야 한다 데이터 읽기와 데이터를 화면에 보여주는 책임을 두개의 클래스로 분리하고 둘 간에 주고받을 데이터를 저수준의 String가 아닌 알맞게 추상화된 타입을 사용하면 데이터를 읽어오는 부분의 변경 때문에 화면을 보여주는 코드가 변경되는 상황을 막을수 있다.

객체지향-추상클래스 & 인터페이스 추상 클래스는 클래스의 명칭과 메서드는 있으나 메서드의 처리 내용은 없다. 상속을 통해서 메서드가 구체화 추상클래스를 상속받은 하위 클래스에서는 추상적인 기능 구현 인터페이스 인터페이스는 상수와 추상 메서드만을 가진다. 클래스는 하나의 상위 클래스로서만 상속받을수 있지만, 인터페이스는 여러개의 인터페잇로부터 상속받을수 있기 때문에 다중 상속의 기능 제공

객체지향-추상클래스 & 인터페이스 추상클래스

UML(unified modeling language) 용도 객체관련 표준화기구인 OMG에서 1997년에 만든 객체 지향적 분석,설계방법론의 표준 지정 통합 모델링 언어 시스템을 개념적, 물리적으로 표현하는 모델이 필요 객체지향적인 분석과 설계를 위한 표준으로 인정받는 모델링 언어인 UML필요 역사 다이어그램 종류

UML 특징 가시화 언어 - UML은 소프트웨어의 개념모델을 시각적인 그래프 형태로 작성 - 표기법에 있어서는 각 심벌에 명확한 정의가 존재 - 개발자들 사이에 오류없는 원활한 의사소통이 가능 명세화 언어 - 명세화란 정확하고, 명백하며, 완전한 모델을 만드는 것을 의미 - UML은 소프트웨어 개발 과정인 분석, 설계, 구현 단계의 각 과정에서 필요한 모델을 정확하고 완전하게 명세화 할수 있는 언어 구축언어 - UML은 Java, C++, Visual Basic과 같은 다양한 프로그래밍 언어로 표현 - 명세화된 설계 모델은 프로그램 소스 코드로 변환하여 구축 가능 - 구축되어 있는 소스를 UML로 역변환하여 분석하는 역공하깅 가능 문서화언어 - 시스템 아키텍처와 이에 대한 모든 상세 내역에 대한 문서화를 다루며, 요구사항을 표현하고 시스템을 테스트하는 언어 제공

UML 구성요소

UML-구조사물(UML모델의 명사형) - 클래스(자동차) -인터페이스 .배기량/색상/브랜드(속성) .속도()/멈춤() (오퍼레이션) -인터페이스 클래스 또는 컴포넌트의 서비스를 명세화하는 오퍼레이션을 모아놓은것. (원으로 표현)

C#에서의 구조형과 클래스의 비교

C#에서의 구조형과 클래스의 비교

C#에서 액세스 수준

C#에서 액세스 수준