Giter VIP home page Giter VIP logo

objects's Introduction

Objects

객체지향

  • 클래스가 아니라 객체를 바라보는 것
  • 객체는 독립적인 존재가 아니라 기능을 구현하기 위해 협력하는 공동체의 존재
  • 객체에게 적절한 역할과 책임을 부여하는 방법 필요
  • 유연하면서도 요구사항에 적절한 협력을 설계하는 방법을 알아야함
  • 설계와 품질 사이의 다양한 측면에 관해 고민해야함

클린 소프트웨어 (로버트 마틴)

소프트웨어 모듈의 세가지 목적

1. 실행 중에 제대로 동작해야함

  • 모듈의 존재 이유

2. 변경을 위해 존재

  • 간단한 작업만으로 변경이 가능해야함
  • 변경하기 어려운 모듈은 제대로 동작하더라도 개선해야함

3. 코드를 읽는 사람과 의사소통

  • 특별한 훈련 없이도 개발자가 쉽게 읽고 이해할 수 있어야함

이해 가능한 코드: 우리의 예상에서 크게 벗어나지 않는 코드

캡슐화의 목적

  • 변경하기 쉬운 객체로 만드는 것
  • 개념적이나 물리적으로 객체 내부의 세부적인 사항을 감추는 것
  • 캡슐화를 통해 객체 내부로의 접근을 제한하여 결합도를 낮춤

기존 Theater

enter() 메서드를 이해하기 위해서는

  • Audience가 Bag을 가지고있고
  • Bag안에 현금과 티켓이 있으며
  • TicketSeller가 TicketOffice에서 티켓을 판매하고
  • TicketOffice 안에 돈과 티켓이 보관되어 있다는 모든 사실을 동시에 기억해야 한다는 문제가 있다.
    그리고 Audience와 TicketSeller가 변경되면 Theater도 변경되야 한다는 문제

=> 하나의 메서드에서 너무 많은 세부사항을 다루기 때문

변경 후 Theater

  • Audience나 TicketSeller의 내부에 직접 접근하지 않는다.

objects's People

Contributors

joelweon avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.