반응형
클래스 다이어그램과 사용하는 코드에 맞게 클래스를 정의하시오.
Main.py
comm = Community()
comm.Publish("빅데이터","홍길동","빅데이터에 데이터는 빅하네.")
comm.Publish("AI","강감차","에잇, 아이야 저리로 가거라.","abcd")
comm.View()
post = comm.Find("AI")
print("제목:",post.title)
print("저자:",post.writer)
print("내용:",post.content)
comm.Remove("빅데이터")
comm.View()
Step1: 클래스에 멤버를 캡슐화하라.
멤버 메서드에서는 어느 메서드가 수행 중인지만 출력하는 형태로 작성하시오.
예를 들어 View메서드에서는 print("View")로 작성
단) 프로그램은 오류없이 동작해야 합니다.
Post.py
#Post.py
class Post:
def __init__(self,title,writer,content):
print("Post 생성")
self.title = title
self.writer = writer
self.content = content
Community.py
#Community.py
from Post import Post
from SPost import SPost
class Community:
def __init__(self):
print("커뮤니티 생성")
def Publish(self,title,writer,content,secret=""):
print("Publish")
def View(self):
print("View")
def Find(self,title):
print("Find")
return Post("a","b","c")
def Remove(self,title):
print("Remove")
Main.py
from Community import Community
comm = Community()
comm.Publish("빅데이터","홍길동","빅데이터에 데이터는 빅하네.")
comm.Publish("AI","강감차","에잇, 아이야 저리로 가거라.","abcd")
comm.View()
post = comm.Find("AI")
print("제목:",post.title)
print("저자:",post.writer)
print("내용:",post.content)
comm.Remove("빅데이터")
comm.View()
Step2: 목적에 맞게 메서드 내부를 구현하시오.
SPost.py
#SPost.py
from Post import Post
class SPost(Post):
def __init__(self,title,writer,content,secret):
#Post.__init__(self,title,writer,content)
super().__init__(title,writer,content)
self.secret = secret
Post.py
#Post.py
class Post:
def __init__(self,title,writer,content):
print("Post 생성")
self.title = title
self.writer = writer
self.content = content
Community.py
#Community.py
from Post import Post
from SPost import SPost
class Community:
def __init__(self):
print("커뮤니티 생성")
self.posts = list()
def Publish(self,title,writer,content,secret=""):
print("Publish")
if secret=="":
post = Post(title,writer,content)
self.posts.append(post)
else:
post = SPost(title,writer,content,secret)
self.posts.append(post)
def View(self):
print("View")
for post in self.posts:
self.ViewPost(post)
def ViewPost(self,post):
print("제목:",post.title)
print("작성자:",post.writer)
print("내용:",post.content)
if(isinstance(post,SPost)):
print("비밀글")
def Find(self,title):
print("Find")
for post in self.posts:
if(post.title == title):
return post
return None
def Remove(self,title):
print("Remove")
for post in self.posts:
if(post.title == title):
self.posts.remove(post)
break
Main.py
from Community import Community
comm = Community()
comm.Publish("빅데이터","홍길동","빅데이터에 데이터는 빅하네.")
comm.Publish("AI","강감차","에잇, 아이야 저리로 가거라.","abcd")
comm.View()
post = comm.Find("AI")
print("제목:",post.title)
print("저자:",post.writer)
print("내용:",post.content)
comm.Remove("빅데이터")
comm.View()
반응형
'언어 자료구조 알고리즘 > 프로그래밍 실습' 카테고리의 다른 글
[python] 고객 관리 - QT, MSSQL (0) | 2020.11.06 |
---|---|
[python] 상품 조회 응용 - MSSQL, QT 사용 (0) | 2020.11.05 |
[python] QT, MSSQL 활용 - 상품 등록하기 (0) | 2020.11.05 |
[python] 쇼핑몰 구현 - MSSQL이용한 콘솔 응용 (0) | 2020.11.04 |
[python] OOP 실습 - 커뮤니트 시뮬레이션 만들기 (0) | 2020.10.30 |
[python] 상속 실습 - 상품과 할인 상품 (0) | 2020.10.30 |
[python] 상속 개요 - 책과 프로그래밍 책 (0) | 2020.10.30 |
[python] 상속 실습 - 음악가, 피아니스트 (0) | 2020.10.30 |
[python] 캡슐화 실습 - 음악가 정의하기 (0) | 2020.10.29 |
[python] 캡슐화 실습 - 직사각형 클래스 정의하기 (0) | 2020.10.29 |