Poprawne projektowanie architektury klas

Hej,

Próbuję ogarnąć obiektowość. Załóżmy że mam jakąś publiczną metodę, na przykład Project.rename

Project.rename ma do wykonania kilka operacji, które są w metodach prywatnych klasy Project

self.change_file_name
self.change_folder_name
self.copy_images
itd.

Jak mam to napisać?
def self.rename(new_name) Project.change_file_name(new_name) Project.change_folder_name(new_name) Project.copy_images(new_name) end

Mam wrażenie, że to zupełnie nie tak ma być ale nie wiem co dalej. Za jaką książkę powinienem się zabrać? :slight_smile:

Czemu robisz wszystko statycznie ? Nie lepiej np
pr = Project.find(1) pr.rename('new_name')
a w klasie
class Project .... def rename update_file_name update_folder_name copy_images end end

Hej,
nie wiem czy zrozumiałem problem, ale z tego co widzę Twój obiekt ma stan, więc motodę statyczną możesz użyć jaki ‘programista-friendly’ interfejs, cały obiekt powinien posiadać stan w postaci ‘new_name’. Co do prywatności metod to zastanowiłbym się nad tym, Twoje nie wyglądają jak by miały być prywatne.

[IMHO] (chodź nie do końca mogłem zrozumieć naturę pytania)

class Project
  def initialize(new_name = "")
     @new_name = new_name
  end

  def update_file_name; end

  def sef.rename(new_name)
     obj = self.new(new_name)
     obj.update_file_name
     .
     .
     .
  end
end