객체지향 프로그래밍이란?

김형민·2021년 6월 17일

처음 객체지향을 공부한다면?
문법적인 형식을 일단 알아보도록 하자..!

하나의 프로그램은 하나의 취지를 가지고 있는 로직으로 이루어져 있는 것이 아니라 여러개의 속성을 가지고 있는 로직의 집합이다..!

처음에 어플리케이션을 만들게 될 때는 코드가 많지않다
그런데 사이트의 규모가 커지고 동원되는 인원이 많아지고 프로젝트 기간이 늘어난다면??

이 복잡한 로직들을 기능별로 그룹핑하고 싶어진다..!
ex) 글목록, 본문, 댓글 등등..

그렇다면? 이 사이트를 구성하고 있는 기능들을 나눠서
기능상으로 연관되어있는 코드끼리 모아놓는다 이것을 일종의 그룹핑, 분류화라고한다!

이렇게 사이트가 커지고 복잡해질때 여러가지 문제가 생길 수 있는데
이를 해결해 줄수 있는 방법중 하나가 객체지향 프로그래밍이라고 할 수 있다!

예를 들어 본문에 필요한 변수와 메소드를 그룹핑해놓은 것을 객체라고 할 수 있다!

객체지향의 장점

  • 재활용성 : 이렇게 기능별로 필요한 변수와 메소드를 분리 해놓으면
    다른 어플리케이션을 제작할때도 그대로 가져와서 사용할 수 있다! 로직을 재활용

  • 하나의 객체안에는 그 객체가 가지고 있는 취지에 맞는 변수와 메소드를 넣어놔
    다른 로직과 구분해준다


실용적으로 직접 코드를 살펴보자

예를 들어 리그오브레전드를 캐릭터들을 객체 지향으로 만든다고 가정해보자..!
자료형에다가 먼저 정보들을 담아둬야한다!

object자료형

	var nunu = {
    	q : 'consume',
        w : 'snowball'
    },
    var garen = {
		q : 'strike',
        w : 'courage'
	}

이런 작업을 쉽게하는 방법은??
비슷한 object를 많이 만들일 있다면 class를 써보자

class

쉽게 말해 class는 object를 뽑아내는 기계

함수로 class 구현해보기

	function 기계() {
    	this.q = 'consume' >> 새로생성 되는 object에 {q:'consume'} 추가해주세요 라는 뜻!
    	this.w = 'snowball'
    }

		new 기계() >> {q:'consume'} ,{w:'snowball'}가 남는다
        
	var nunu = new 기계() // 아까 위에 만든 것과 똑같다
    
    var nunu = {
    	q : 'consume',
        w : 'snowball'
    },
	
    /////
    var garen = new 기계() >> nunu의 스킬 object가 찍힌다
    해결해보자!
	>>>
		function 기계(스킬) {
    	this.q = 스킬 
    	this.w = 'snowball'
    }
    이런식으로 단순하게 파라미터롤 값을 넘겨주면 된다..
    var garen = new 기계('consume')

this는 기계로 부터 생성되는 object라고 알아두자

2016년 ES6문법 이후론 아래 처럼 많이쓴다!

	class Hero {
    	constructor(구멍){
          this.q = 구멍;
          this.w = 'snowball'
        }   
    }
	new Hero() >> {q: 구멍}, {w :'snowball'}
	
profile
항해 중인 개발자

0개의 댓글