분류 전체보기 1097

다형성 활용하기 { 배열과 다형성, 배열과 다형성 활용하기, 상속은 언제 사용할까 }

배열과 다형성? 앞에서 배운 상속과 다형성을 활용하면 프로그램을 유지보수하는 데 매우 편리합니다. 이때 배열과 함께 사용하면 여러 하위 클래스 자료형을 상위 클래스 자료형으로 한꺼번에 관리할 수도 있습니다. 배열과 다형성 활용하기 (고객 분류에 GOLD 등급 추가 & 배열로 고객 구현) 고객 등급 분류를 더 세분화 하기 위해 GOLD 등급을 추가하고자 한다고 생각해봅시다. GOLD 의 혜택은 다음과 같습니다. 할인율 10%, 보너스 포인트 2% 적립, 담당 전문 상담원은 없다. 위 내용을 기반으로 Customer 클래스를 상속받아 GoldCustomer 클래스를 만들어보겠습니다. Customer 클래스를 상속받는 계층은 위와 같습니다. 우선 polymorphism 패키지에 있는 Customer 클래스의 ..

다형성 { 다형성이란, 다형성의 장점 }

다형성이란? 지금까지 설명한 묵시적 클래스 형 변환과 가상 메서드를 바탕으로 객체 지향의 중요한 특성인 다형성(polymorphism) 을 학습해 봅시다. 다형성 polymorphism 이란 하나의 코드가 여러 자료형으로 구현되어 실행되는 것을 말합니다. 쉽게 말해 같은 코드에서 여러 실행 결과가 나오는 것을 의미합니다. 예제 코드를 통해서 알아보겠습니다. class Animal { public void move() { System.out.println("동물이 움직입니다."); } } class Human extends Animal { public void move() { System.out.println("사람이 두 발로 뜁니다."); } } class Tiger extends Animal { pub..

메서드 오버라이딩 { 상위 클래스 메서드 재정의하기, VIP 고객 클래스의 제품 가격 계산 메서드 재정의하기, 묵시적 클래스 형 변환과 메서드 재정의, 가상 메서드 }

상위 클래스 메서드 재정의하기 이전 예제에서 VIP 등급의 고객을 생성할 때 VIP 고객에게 제공하는 할인율과 세일 가격을 어떻게 적용할지 구현하지 않았습니다. 어떻게 이 기능을 구현할지 해결해 보겠습니다. 상위 클래스 Customer 에는 calcPrice( ) 라는 메서드를 통해 제품 가격을 계산합니다. public int calcPrice(int price) { bonusPoint += price * bonusRatio; return price; } 이 메서드는 정가를 그대로 지불하도록 구현되어 있습니다. 그런데 VIP 고객은 정가에서 10% 할인을 받을 수 있습니다. 이런 경우 VIP 고객 클래스에서는 상위 클래스의 calcPrice( ) 메서드를 그대로 쓸 수 없습니다. 이렇게 상위 클래스에 정..

상속에서 클래스 생성과 형 변환 { 하위 클래스가 생성되는 과정, 부모를 부르는 예약어 super, 상위 클래스로 묵시적 클래스 형 변환 }

하위 클래스가 생성되는 과정을 알아야 하는 이유를 알아야 하는 이유 하위 클래스가 생성될 때는 상위 클래스의 생성자가 먼저 호출됩니다. 상속 관계에서 클래스의 생성 과정을 살펴보면 하위 클래스가 상위 클래스의 변수와 메서드를 사용할 수 있는 이유와 하위 클래스가 상위 클래스의 자료형으로 형 변환을 할 수 있는 이유를 이해할 수 있습니다. 하위 클래스가 생성되는 과정 상속을 받은 하위 클래스는 상위 클래스의 변수와 메서드를 사용할 수 있다고 했습니다. 즉 이전에 만든 CustomerTest 클래스 예제를 살펴보면, VIPCustomer 클래스로 선언한 customerKim 인스턴스는 상속받은 상위 클래스의 변수를 자기 것처럼 사용할 수 있습니다. 변수를 사용할 수 있다는 것은 그 변수를 저장하고 있는 메모..

상속이란 { 상속이란, 클래스의 상속, 상속을 사용하여 고객 관리 프로그램 구현하기 }

상속과 다형성을 배워야 하는 이유 객체 지향 프로그램에서 지원하는 여러 기술을 활용하면 재사용성, 확장성이 좋고 유지보수가 수월한 프로그램을 구현할 수 있습니다. 상속과 다형성이 이에 해당합니다. 또한 객체 지향 프로그램의 다형성을 활용하면 유연한 구조이 프로그램을 구현할 수 있습니다. 매우 중요한 내용이므로 필수적으로 학습하시길 바랍니다. 상속이란? 객체 지향 프로그래밍의 중요한 특징 중 하나가 상속(inheritance)입니다. 상속은 우리가 일반적으로 알 듯 무엇인가를 물려받는다는 의미입니다. 자식이 부모로부터 무엇인가를 물려받으면 자식은 그것을 사용할 수 있습니다. 객체 지향 프로그램에서도 마찬가지입니다. B 클래스가 A 클래스를 상속받으면 B 클래스는 A 클래스의 멤버 변수와 메서드를 사용할 수..

SCRUM { 개념과 특징, 팀의 역할, SCRUM 과정 }

SCRUM 개념과 특징 Agile 방법론 중 두 번째 입니다. 마찬가지로 빠르게 개발하는 것에 목표를 두고 있습니다. 아직까지 SCRUM 이 직접적으로 시험에 출제된 적은 없습니다. SCRUM 팀의 역할 제품 책임자 Product Owner 개발 목표에 이해도가 높은 개발 의뢰자, 사용자가 담당한다. 제품 요구사항을 파악하여 기능 목록(Product Backlog)을 작성한다. 제품 테스트 수행 및 요구사항 우선순위를 갱신한다. 업무 관저멩서 우선순위와 중요도를 표시하고 신규 항목을 추가한다. 스프린트 계획 수립까지만 임무를 수행한다. 스프린트가 시작되면 팀 운영에 관여하지 않는다. 스크럼 마스터 개발의 마스터입니다. 업무를 배분만 하고 일은 강요하지 않으며 팀을 스스로 조직하고 관리하도록 지원한다. 개..

소프트웨어 개발 방법론 { 생명 주기, 폭포수 모형, 나선형 모형, 하향식, 상향식, 프로토타입, HIPO, V, Agile, XP }

소프트웨어 설계 방법론 소프트웨어 생명 주기 Software Life Cycle : 소프트웨어 제품의 개념 형성에서 시작하여 운용 / 유지보수에 이르기까지 변화의 모든 과정이다. -> 타당성 검토 -> 개발 계획 -> 요구사항 분석 -> 설계 -> 구현 -> 테스트 -> 운용 -> 유지보수 폭포수 모형 waterfall Model 의 개요 폭포의 물은 떨어지면 다시 올라가지 못한다. 이처럼 소프트웨어 개발은 처음부터 순서대로 쭉 해나가야 한다는 것이다. 폭포수 모형은 소규모 개발에 적합합니다. 왜냐하면 빠르게 우리가 해야하는 일들을 정리해서 정확하게 진행할 수 있기 때문이다. 단점은 변경사항이 발생하거나 이벤트가 발생하면 수정을 할 수가 없습니다. 그래서 나온 것이 나선형 모형입니다. 나선형 모형 Spi..

CASE { 개념, 기능, 장점, 분류, 종류 }

CASE (Computer Aided Software Engineering) 개념 CAD 는 Computer Aided Design 이라고 해서 디자인을 컴퓨터가 도와주는 것을 의미합니다. CASE 는 소프트웨어 프로그래밍을 자동으로 도와주는 도구를 의미합니다. CASE 기능 개발을 신속 & 정확하게 도와주고 오류 수정이 쉬워 소프트웨어 품질이 향상된다. 소프트웨어 생명주기의 전체 단계를 연결해 주고 자동화시켜 주는 통합된 도구를 제공해주는 기술이다. 소프트웨어 시스템의 문서화 및 명세화를 위한 그래픽 기능을 제공합니다. 소프트웨어 개발 단계의 표준화를 기할 수 있으며 자료 흐름도 작성 기능을 제공한다. 모델들 사이의 모순 검사 기능을 제공하며 다양한 소프트웨어 개발 모형을 지원한다. 원천 기술 : 구조..

재공학&역공학{재공학 개념, 장점&목표&과정} {역공학 개념}

소프트웨어 재공학 software reengineering 의 개념 소프트웨어 개발에 엄청 많은 돈이 든다는 것을 우리는 배웠다. 많은 돈이 들지 않게 하기 위해서는 어떻게 하면 될까? 기존에 만들어 두었던 코드를 다시 쓰면 되지 않을까? 이것이 소프트웨어 재공학이다. 소프트웨어 재공학 software reengineering 의 장점 & 목표 & 과정 재공학의 장점 - 개발 시간 및 비용 감소 - 품질 향상 - 생산성 향상 - 신뢰성 향상 - 구축 방법에 대한 지식의 공유 - 프로젝트 실패 위험 감소 (이미 우리가 쓰고 있는 것을 다시 쓰는 것이기 때문에 신뢰성도 올라가고 실패위험도 감소하는 효과가 있다.) 재공학의 목표 - 소프트웨어의 유지보수성 향상이 최우선 목표이다. - 복잡한 시스템을 다루는 방..

소프트웨어 공학의 개념 { 개념, 특징, 시스템의 기본요소, 소프트웨어 위기 & 공학 }

소프트웨어(software)의 개념 소프트웨어 공학이라는 것은 소프트웨어를 만들기 위한 학문이다라고 이해할 수 있다. 소프트웨어라는 것은 우리가 알고 있는 어플리케이션이고, 모바일&PC 등 환경에서 사용되는 프로그램들이다. 어려운 말로 정의하자면 다음과 같다. 소프트웨어의 개념 software "컴퓨터를 동작시키고 어떤 일의 처리 순서와 방법을 지시하는 명령어의 집합인 프로그램과 프로그램의 수행에 필요한 절차, 규칙, 관련 문서 등을 총칭한다." 소프트웨어(software)의 특징 상품성 : 소프트웨어를 개발하면 상품이 되어 판매가 된다. 복잡성 : 개발하는 과정이 복잡하고 관리가 어렵다. 변경 가능성 : 프로그램을 일부 수정하여 업그레이드 및 오류 수정 등을 할 수 있다. 복제성 : 복제가 용이해 쉽게..