날씨

경산시 서부2동
    • 구름 많음
    • 11.0°C
    • 45%
    • 20%
    • 구름 많음
    • 9.0°C
    • 50%
    • 20%
    • 흐림
    • 6.0°C
    • 80%
    • 30%
    • 흐림
    • 5.0°C
    • 80%
    • 30%
    • 흐림
    • 4.0°C
    • 80%
    • 30%
    • 흐림
    • 3.0°C
    • 75%
    • 30%
    • 구름 많음
    • 3.0°C
    • 65%
    • 20%
    • 구름 많음
    • 7.0°C
    • 45%
    • 20%
    • 구름 많음
    • 8.0°C
    • 45%
    • 20%
    • 흐림
    • 6.0°C
    • 60%
    • 30%
    • 흐림
    • 4.0°C
    • 70%
    • 30%
    • 흐림
    • 2.0°C
    • 80%
    • 30%
    • 흐림
    • 7.0°C
    • 50%
    • 30%
    • 흐림
    • 6.0°C
    • 70%
    • 30%
대구 수성1가
    • 구름 많음
    • 11.0°C
    • 45%
    • 20%
    • 구름 많음
    • 9.0°C
    • 45%
    • 20%
    • 구름 많음
    • 6.0°C
    • 70%
    • 20%
    • 흐림
    • 5.0°C
    • 75%
    • 30%
    • 흐림
    • 4.0°C
    • 80%
    • 30%
    • 흐림
    • 3.0°C
    • 80%
    • 30%
    • 구름 많음
    • 3.0°C
    • 65%
    • 20%
    • 구름 많음
    • 8.0°C
    • 45%
    • 20%
    • 구름 많음
    • 9.0°C
    • 40%
    • 20%
    • 흐림
    • 6.0°C
    • 55%
    • 30%
    • 흐림
    • 4.0°C
    • 65%
    • 30%
    • 흐림
    • 3.0°C
    • 75%
    • 30%
    • 흐림
    • 7.0°C
    • 50%
    • 30%
    • 흐림
    • 7.0°C
    • 70%
    • 30%
발표시간: ,
날씨 정보 저작권자 © 기상청

?

Shortcut

PrevPrev Article

NextNext Article

Larger Font Smaller Font Up Down Go comment Print
XE코어
2020.08.12 23:50

클래스의 정의 Class

profile
(*.224.201.188) Views 23 Votes 0 Comment 0
?

Shortcut

PrevPrev Article

NextNext Article

Larger Font Smaller Font Up Down Go comment Print

 

클래스의 정의 Class  

교과명 xe 코어 교사명   수업일시  
능력단위 xe처럼 생각하고 말하기 교재쪽   평가방법  
능력단위요소          
최종 수업목표  
세부 수업목표  
필요 장비 /재료  
단계 학습활동
학습내용 메모
학습내용

XE는 객체 지향 웹프로그램

XE코어는 클래스(Class)로 정의된 메서드(Method)에 의해 객체(Object)를 생성하는 객체 지향 웹프로그램이다.

객체 지향 프로그래밍(Object-Oriented Programming, OOP)은 컴퓨터 프로그래밍의 패러다임의 하나이다. 객체 지향 프로그래밍은 컴퓨터 프로그램을 명령어의 목록으로 보는 시각에서 벗어나 여러 개의 독립된 단위, 즉 "객체"들의 모임으로 파악하고자 하는 것이다. 각각의 객체는 메시지를 주고받고, 데이터를 처리할 수 있다.

객체 지향 프로그래밍은 프로그램을 유연하고 변경이 용이하게 만들기 때문에 대규모 소프트웨어 개발에 많이 사용된다. 또한 프로그래밍을 더 배우기 쉽게 하고 소프트웨어 개발과 보수를 간편하게 하며, 보다 직관적인 코드 분석을 가능하게 하는 장점을 갖고 있다. 그러나 지나친 프로그램의 객체화 경향은 실제 세계의 모습을 그대로 반영하지 못한다는 비판을 받기도 한다.

기본 구성 요소

  • 클래스(Class) - 같은 종류(또는 문제 해결을 위한)의 집단에 속하는 속성(attribute)과 행위(behavior)를 정의한 것으로 객체지향 프로그램의 기본적인 사용자 정의 데이터형(user define data type)이라고 할 수 있다. 클래스는 프로그래머가 아니지만 해결해야 할 문제가 속하는 영역에 종사하는 사람이라면 사용할 수 있고, 다른 클래스 또는 외부 요소와 독립적으로 디자인하여야 한다.
  • 객체(Object) - 클래스의 인스턴스(실제로 메모리상에 할당된 것)이다. 객체는 자신 고유의 속성(attribute)을 가지며 클래스에서 정의한 행위(behavior)를 수행할 수 있다. 객체의 행위는 클래스에 정의된 행위에 대한 정의를 공유함으로써 메모리를 경제적으로 사용한다.
  • 메서드(Method), 메시지(Message) - 클래스로부터 생성된 객체를 사용하는 방법으로서 객체에 명령을 내리는 메시지라 할 수 있다. 메서드는 한 객체의 서브루틴(subroutine) 형태로 객체의 속성을 조작하는 데 사용된다. 또 객체 간의 통신은 메시지를 통해 이루어진다.

※ 위키사전 인용글

클래스(Class)의 정의

XE코어는 각 모듈(독립된 단위 프로그램) 별로 속성(Property)과 메서드(Method)를 묶어 클래스(Class)로 정의하였다.(PHP로 작성한다.)

클래스의 정의 방법을 알아본다. 각각의 프로그램 언어는 이해를 돕기 위해 예제와 함께 내 나름대로 의미를 살려 작성하였다.

 

<?php

 

class assemblePC {

 

}

 

?>

클래스(집합)는 같은 일을 하는 함수(function)들을 한 곳에 모아두는 역할로 속성(재료)과 메서드(해야 할 일)를 미리 정의(준비된 약속) 해 둔다.

클래스를 정의할 때는 class 클래스이름 { ... } 으로 작성한다. "조립컴퓨터"라는 클래스를 만들기 위해 클래스의 이름을 assemblePC로 하였다.

"조립컴퓨터"를 클래스로 정의하는 가장 큰 목적은 컴퓨터의 구매자가 한 사람이 아닌 여러 사람일 경우 각각의 요구하는 부품과 추가 부품의 견적을 미리 정의한 클래스에 의해서 얼마든지 재활용(상속) 할 수 있기때문이다.

 

<?php

 

class assemblePC {

   var $cpu, $board, $vga;

 

}

 

?>

속성(Property)에 대한 정의를 한다. 속성은 재료와 같은 의미이다. 컴퓨터를 조립하기 위해서는 반드시 필요한 기본 재료들이 있고 이것을 미리 준비하는 것이다. 속성의 정의는 필요한 만큼 사전에 정의할 수도 있고 메서드(해야 할 일)에서도 얼마든지 추가 할 수 있다.

클래스의 속성을 정의할 때는 예약어 var 과 함께

 

var $cpu;

var $board;

var $vga;

 

처럼 세로 방향으로 작성할 수도 있다. 우선 간단히 3개의 속성만 정의하였다.

 

<?php

 

class assemblePC {

   var $cpu, $board, $vga;

 

   function assemblePC($c, $b, $v) {

      $this->cpu = $c;

      $this->board = $b;

      $this->vga = $v;

   }

 

}

 

?>

function은 함수라고도 말하는데 이것을 Class의 메서드(Method) 즉, 해야 할 일(방법)의 구체적인 내용을 말한다. 그런데 Class가 정의되었다고 해서 객체(여기서는 컴퓨터)가 생성되지 않는다. 해야 할 일(function)을 작성한 메서드(Method) 중에서 클래스(Class) 이름과 같은 이름을 가진 메서드가 있어야 비로서 무엇(객체)인가를 만들 수 있다.

 

예를 들어서 컴퓨터를 구매하고자 하는 손님은 "조립컴퓨터를 만들어 주세요! = new assemblePC()" 라고 말하지 "조립컴퓨터 만드는 방법! = class assemblePC{}" 이라고 말하지는 않는다. 이렇게 클래스 이름과 같은 이름을 가진 메서드(function)는 부르는 것만으로도 클래스(Class) 전체를 자동으로 실행시키기 때문에 이것을 생성자(constructor)라고 부른다. 생성자라는 이름에서 알 수 있듯이 Class로 정의된 내용과 방법에 따라 무엇(객체)인가는 반드시 만들어 내놓기 때문에 특별히 객체생성을 위한 생성자라는 별명이 붙게 된다.

생성자 안에 받아온 변수 ($c, $b, $v)는 객체생성에 필요한 재료(속성)의 이름(구체적인 내용)을 임시로 받아오는 매개변수이다. 객체생성을 요구한 변수(컴퓨터를 만들어 달라고 요구한 변수)는 조립에 사용될 부품을 순서대로 알려줄 뿐 클래스(Class)에서 정의된 속성의 변수이름을 모른다. 따라서 생성자는 객체생성에 필요한 재료의 이름값을 간단히 받아온 후 객체생성을 위해 각각의 속성값으로 나누어 준다. 매개변수는 $vga라고 자세히 작성해도 상관없고 1개일 경우 $value로 작성하기도 한다. 매개변수가 갖는 의미를 이해하기 쉽게 설명하면, 객체생성을 요구한 손님이 컴퓨터의 CPU와 마더보드, 그래픽카드의 정확한 속성을 모른다고 가정할 때 막연히 "인텔CPU, 아수스 보드, 지포스가 좋을까요?"라고 말하면 생성자는 이것을 각각 매개변수로 받아 와서 클래스에서 정의한 속성에 차례대로 대체하여 나누어 담는다는 것을 의미한다.

생성자가 매개변수로 받아온 내용을 속성에 할당하는 $this는 객체변수이다. 객체변수란 객체생성을 요구한 변수를 암시적으로 가리킨다.

 

객체생성을 요구한 변수가 클래스(Class)에서 정의한 속성을 모르는 것처럼 클래스 역시 객체생성을 요구한 변수의 이름을 모른다. 아니 알 필요가 없다. 클래스는 단순히 "손님이 원하는 CPU, 손님이 원하는 마더보드, 손님이 원하는 VGA"라고만 정의하면 된다. 따라서 클래스는 $this->cpu, $this->board, $this->vga 라고 작성한 것이다. -> 는 객체변수의 속성 하나하나를 가리키는 지정연산자이다. 결과적으로 객체생성을 요구한 변수가 $woojinhome 이라고 할때 $woojinhome = new assemblePC('인텔','아수스','지포스'); 라고 객체생성을 요구할 것이고 이때 $this는 객체변수 $woojinhome 을 가리킨다. 따라서 $woojinhome->cpu = '인텔'; $woojinhome->board = '아수스'; $woojinhome->vga = '지포스'; 가 된다.

 

만약 새로운 변수 $XE가 $XE = new assemblePC('AMD','GIGABYTE','라데온'); 라고 객체생성을 재차 요구하면 클래스는 "손님이 원하는 CPU"로 $this->cpu 가 되고 이때 객체변수 $this는 $XE를 가리킨다. 따라서 $XE->cpu = 'AMD'; 이다.

<?php

 

class assemblePC {

   var $cpu, $board, $vga;

 

   function assemblePC($c, $b, $v) {

      $this->cpu = $c;

      $this->board = $b;

      $this->vga = $v;

   }

 

   function ram($ram) {

      $this->ram = $ram;

   }

 

}

 

?>

메모리에 대한 속성을 추가로 정의하기 위해서 생성자 아래에 메서드(해야 할 일)를 하나 추가하였다. 만약 객체생성을 요구할 때 메모리에 대한 추가를 별도로 요구할 수 있다. 생성자와는 별도로 작성되었기 때문에 객체생성을 요구할 때는 $woojinhome->ram('4기가'); 와 같이 추가로 요청해야 한다. 이것은 "제가 원하는 메모리는 4기가입니다." 와 같고 클래스는 메서드 ram()에서 정의한대로 "손님이 원하는 메모리는 4기가" 라는 뜻으로 $this->ram = '4기가'; 로 속성을 추가하고 할당한다.

 

<?php

 

class assemblePC {

   var $cpu, $board, $vga;

 

   function assemblePC($c, $b, $v) {

      $this->cpu = $c;

      $this->board = $b;

      $this->vga = $v;

   }

 

   function ram($ram) {

      $this->ram = $ram;

   }

 

   function make_info() {

      echo '*CPU : '.$this->cpu.'<br />';

      echo '*BOARD : '.$this->board.'<br />';

      echo '*VGA : '.$this->vga.'<br />';

      echo '*RAM : '.$this->ram;

   }

 

}

 

?>

make_info() 는 매개변수 없이 호출한 클래스 assemblePC의 객체변수($this)가 가진 모든 속성값들을 하나씩 출력한다.

 

 

 

 
정리  

 

 

 

TAG •
* User ID : leesungmin
* User Name : 이성민
* Email : imadonis@naver.com
* Homepage : https://4880.net
* Birthday : 1972-07-24
* Member Group : 관리그룹,유료회원,문제출제
* Signup Date : 2012-07-19
* Following : 랩퍼투혼 whom the member is following.
* Following Count : 1people
* Followed by : 탑돌이, 랩퍼투혼 ... now follwing this member.
* Followed Count : 2people

< 빌립보서 4장 13절>
내가 주 안에서 크게 기뻐함은 너희가 나를 생각하던 것이 이제 다시 싹이 남이니 너희가 또한 이를 위하여 생각은 하였으나 기회가 없었느니라   
내가 궁핍하므로 말하는 것이 아니니라 어떠한 형편에든지 나는 자족하기를 배웠노니    
나는 비천에 처할 줄도 알고 풍부에 처할 줄도 알아 모든 일 곧 배부름과 배고픔과 풍부와 궁핍에도 처할 줄 아는 일체의 비결을 배웠노라
내게 능력 주시는 자 안에서 내가 모든 것을 할 수 있느니라 

* Document Count : 17498
* Comment Count : 82
* Document Count : 36
* Document Count : 115
* Comment Count : 123
* Document Count : 2
* Comment Count : 2
* Document Count : 1
* Comment Count : -1
카카오링크
Attach Images or Files

Drop your files here, or click the button to the left.

Maximum File Size : 0MB (Allowed extentsions : *.*)

0 file(s) attached ( / )

제로XE/라이믹스/그누/워드프레스

회원만 쓰기 가능합니다.

List of Articles
No. Category Subject Author Date Views
Notice Tip&Tech xe 동작순서 부운영자 2015.08.24 1013
Notice Tip&Tech XE의 애드온 및 모듈의 기능 요약표 부운영자 2015.01.16 1262
Notice Tip&Tech XEReferences 부운영자 2014.11.29 933
Notice Tip&Tech XE 스킨 제작 매뉴얼 v1.1 (Korean, PDF) file 부운영자 2014.11.29 1290
Notice Tip&Tech XE 개발자 매뉴얼 v1.1 (Korean, PDF) file 부운영자 2014.11.29 1790
Notice Tip&Tech xe 레퍼런스 모음 file 부운영자 2014.10.10 2534
화제의 글 Tip&Tech PHP용 로그 라이브러리 공유합니다. 부운영자 2021.03.29 79
화제의 글 XE/라이믹스 게시글 DB 수동이동 부운영자 2021.03.17 52
화제의 글 매뉴얼 xml 쿼리 사용법 부운영자 2021.03.08 58
211 XE코어 XML 쿼리 언어 XML 쿼리 언어 XML Query Language SMaker님의 글을 전문인용하여 재구성하였다. - http://xe.xpressengine.net/wiki/18180631 개요 쿼리 사용방법 XML sample Select query 예제 Join Select 예제 Letf Join Select 예제 Insert 예제 update 예제 delete 예제 Select Click Count 예제 개요 XpressEngine는 SQL 쿼리를 그대... 부운영자 2020.08.12 66
210 XE코어 XE 템플릿 문법 XE 템플릿 문법의 이해 기본 문법 default 파일 포함 include 조건문 IF 반복문 loop 부운영자 2020.08.12 35
209 XE코어 유용한 함수들 getUrl() logged_info 부운영자 2020.08.12 41
208 XE코어 클래스 친구들 클래스 친구들 Object.class.php Context.class.php 부운영자 2020.08.12 47
207 XE코어 설정을 위한 2개의 문서 환경설정 config.inc.php 함수라이브러리 func.inc.php 부운영자 2020.08.12 23
206 XE코어 Context의 이해 Understanding of Context Context는 사전적 의미로 (어떤 일의) 맥락, 전후 사정을 뜻한다. 즉 어떤 글이 있다면 글의 맥락, 문맥이라는 뜻이기도 하다. 컴퓨터에서는 이것을 상황 정보라고도 표현한다. 쉽게 말해서 XE와 같은 CMS 프레임워크에서는 웹페이지를 만들기 위해 필요한 모든 정보를 가지는 데이터(Data)의 구조... 부운영자 2020.08.12 37
205 XE코어 xe의 시작페이지 index.php XE코어의 index.php는 무척 간단한 몇 줄의 PHP 구문으로 작성되어 있다. 하지만 index.php는 XE 전반에 걸쳐 가장 중요한 문서이다. 왜냐하면 XE가 기본적으로 사용하는 class파일을 모두 include(포함)한다. require(&#039;./config/ config.inc.php&#039;); 위 문장은 단 하나의 config.inc.php 문서파일을 불러오는 것 같지만 사실... 부운영자 2020.08.12 49
» XE코어 클래스의 정의 Class 클래스의 정의 Class 교과명 xe 코어 교사명 수업일시 능력단위 xe처럼 생각하고 말하기 교재쪽 평가방법 능력단위요소 최종 수업목표 세부 수업목표 필요 장비 /재료 단계 학습활동 학습내용 메모 학습내용 XE는 객체 지향 웹프로그램 XE코어는 클래스(Class)로 정의된 메서드(Method)에 의해 객체(Object)를 생성하는 객체... 부운영자 2020.08.12 23
203 XE코어 XE 동작 순서 XpressEngine의 동작 순서 교과명 XE코어 교사명 수업일시 능력단위 교재쪽 평가방법 능력단위요소 최종 수업목표 세부 수업목표 필요 장비 /재료 단계 학습활동 학습내용 메모 학습내용 XE는 요청을 받고 이에 대한 결과를 만들어 출력을 하고 종료됩니다. 전체적인 동작순서는 아래와 같습니다. XpressEngine의 순서별 안... file 부운영자 2020.08.12 34
202 XE코어 xe 코어 xe 코어 부운영자 2020.08.12 33
201 XE코어 xe 노트 소개 XE 코어의 이해를 위한 XE스쿨 학습 노트 XE코어를 살펴보는 것은 XE Core를 수정하거나 변경하기 위해서 공부하는 것이 아니다. XE코어가 생각하고 행동하는 방법을 유심히 살펴보는 것이고 작성된 코드의 내용을 한번 쯤 읽어보는(Reading Code) 작업이다. 그러면 XE와 좀더 친하게 지낼 수 있다...^^ 부운영자 2020.08.12 14
200 XE코어 XE 노트 xe 노트 소개 xe 코어 xe 모듈 xe 애드온 xe 위젯 부운영자 2020.08.12 15
199 Tip&Tech Chrome Console SameSite Cookie Attribute Warning 제거 Chrome Console SameSite Cookie Attribute Warning Is anybody else getting this Chrome console warning? A cookie associated with a cross-site resource at was set without the SameSite attribute. A future release of Chrome will only deliver Stack Overflow 부운영자 2020.07.29 49
198 Tip&Tech 리눅스 쉘스크립트, Crontab을 이용한 자동백업 따라해보기 리눅스 쉘스크립트, Crontab을 이용한 자동백업 따라해보기 Ubuntu 백업 스크립트 작성하기 아래 설명글은 Ubuntu 뿐만 아니라 모든 Linux 배포판에 대해서 공통적으로 실행가능합니다. 서버를 운영하면서, 백업과 보안은 항상 염두해 두어야 하는 사항이다. 리눅스 시스템.. 배우고 나누고 배우고 정리하 - RainbowM / 2017... 부운영자 2020.07.15 150
197 Tip&Tech Crontab 설정 방법 rhymix/rhymix-docs Rhymix Official Documentation. Contribute to rhymix/rhymix-docs development by creating an account on GitHub. GitHub 부운영자 2020.07.15 52
196 Tip&Tech 오류 좀 봐주세요!! mmm 이걸 해결 못하고 있네요...ㅜㅜ jQuery(function($) { if(viewer_option &lt; 1 &amp;&amp; viewer_srl.length &lt; 1 &amp;&amp; viewer_ext.length &lt; 1 &amp;&amp; viewer_url.length &lt; 1) return; var srl = viewer_srl.split(&#039; | &#039;); var ext = viewer_ext.split(&#039; | &#039;); var url = viewer_url.split(&#039; | &#039;); var l = url.length; var exts = &#039;pdf... file 부운영자 2020.07.04 50
195 Tip&Tech 빌어먹을 로봇 퇴치하기 =>SemrushBot 빌어먹을 로봇 퇴치하기 =&gt;SemrushBot 일반적으로 로봇을 차단하는데 robots.txt를 이용합니다. 하지만 robots.txt 규칙을 무시하는 빌어먹을(??) 봇들이 많습니다. .htaccess를 이용하는 방법도 있습니다. https://github.com/bluedragonz/bad-bot-blocker/blob/master/.htaccess 의 내용을 .htaccess 앞부분에 넣어주면 됩... 부운영자 2020.06.15 156
194 Tip&Tech 에디터 컴포넌트에서 특정 xml만 403 forbidden 라이믹스는 보안상 모듈 폴더 아래에 있는 xml 파일에 직접 접근하는 것을 막고 있습니다. 에디터 컴포넌트에서 xml 파일에 직접 접근할 필요가 있다면 .htaccess 파일 4번째 줄의 내용을 RewriteCond %{REQUEST_URI} !/modules/editor/(skins|styles)/ 에서 RewriteCond %{REQUEST_URI} !/modules/editor/(skins|styles|com... 부운영자 2020.05.18 127
193 Tip&Tech 크롬 사용시 로그인 풀림 현상 가생이닷컴 &gt; 공지사항 &gt; 크롬 사용시 로그인 풀림 현상 한국에 대한 해외반응 한류팬반응 일본반응 중국반응 한류영상등 번역 gasengi.com 부운영자 2020.04.27 179
192 Tip&Tech 파도타기 스크립트[ 프로모에 위치] &lt;!DOCTYPE html&gt; &lt;html lang=&quot;ko&quot;&gt; &lt;head&gt; &lt;meta charset=&quot;UTF-8&quot;&gt; &lt;title&gt;파도타기시작 &lt;/title&gt; &lt;style type=&quot;text/css&quot;&gt; .wave_document{background: #53FF4C; width: 100px; height: 30px; border: 1px solid #CCCCCC; border-radius: 15px;} // .wave_document{background: #FFFFFF; width: 50px; height: 30px; border... 부운영자 2020.04.26 302
List
Board Pagination Prev 1 2 3 4 5 6 7 8 9 10 ... 14 Next
/ 14